예제 #1
0
 /**
  * 疾病缓存
  */
 public function diseaseCache($param = [], $offset)
 {
     //        $disease = new Disease();
     //        $res = $disease->getAllDisease();
     $disease = new Disease();
     $length = self::$length;
     $offset = ($offset - 1) * $length;
     //        $res = $symptom->getAllSymptom();
     $res = $disease->getDiseaseLimit([], $offset, $length);
     $i = 0;
     foreach ($res as $k => $v) {
         if (CacheHelper::$param['function']($param['key_prefix'], $v, true)) {
             $i++;
         }
     }
     return $i;
 }
 private function disSymColSitemap()
 {
     /**
      * <urlset>
      *  <url>
      *  <loc>http://jb.9939.com/gm/jianjie/</loc>
      *  <lastmod>2009-03-27</lastmod>
      *  <changefreq>always</changefreq>
      *  <priority>0.6</priority>
      *  </url>
      * </urlset>
      */
     $this->_changefreq = 'always';
     $this->_priority = '0.6';
     $where = $this->_ownership;
     $flag = 1;
     //目录
     if ($where == 'pc') {
         $frontend = \Yii::getAlias("@frontend");
         $frontDomain = \Yii::getAlias("@frontdomain");
     } elseif ($where == 'wap') {
         $frontend = \Yii::getAlias("@wapjb");
         $frontDomain = \Yii::getAlias("@mjb_domain");
     }
     $sitemapFolder = $this->_baidu ? 'sitemap/sitemapbaidudissymcolindex' : 'sitemap/sitemapdissymcolindex';
     $fileFolder = $frontend . '/web/' . $sitemapFolder;
     if (!file_exists($fileFolder) || !is_dir($fileFolder)) {
         mkdir($fileFolder, 0755, true);
     }
     $type = '';
     // 疾病 | 症状
     $sitemap_site = $this->getSitemapCount($fileFolder, ['dis_offset' => 0, 'sym_offset' => 0, 'max_file_tail' => 0]);
     $dis_offset = $sitemap_site['dis_offset'];
     $dis_obj = new Disease();
     $dis_count = $dis_obj->getCount();
     if ($dis_offset < $dis_count) {
         $type = 'disease';
         $data = $dis_obj->getDiseaseLimit(['status' => 2], $dis_offset, 1000);
         $sitemap_site['dis_offset'] = (int) $dis_offset + count($data);
     } else {
         $type = 'symptom';
         $sym_offset = $sitemap_site['sym_offset'];
         $dis_obj = new Symptom();
         $sym_count = $dis_obj->getCount();
         if ($sym_offset < $sym_count) {
             $data = $dis_obj->getSymptomLimit(['status' => 3], $sym_offset, 2000);
             $sitemap_site['sym_offset'] = (int) $sym_offset + count($data);
             $flag = $sitemap_site['sym_offset'] == $sym_count ? 2 : 1;
         } else {
             //无需生成新的数据,返回索引的url
             $res = $this->generateSitemapIndex($fileFolder, $sitemapFolder, 'dissym');
             return ['flag' => 2, 'siteindex' => $res['url']];
         }
     }
     //xml
     $sitemap = '<?xml version="1.0" encoding="UTF-8"?>';
     $sitemap .= $this->_baidu ? '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:mobile="http://www.baidu.com/schemas/sitemap-mobile/1/">' : '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
     $sitemap .= $this->setDiseaseSymptomSubURL($data, $type);
     $sitemap .= '</urlset>';
     $sitemap_site['max_file_tail']++;
     $name_tail = $sitemap_site['max_file_tail'];
     //写入计数文件
     $this->setSitemapCount($sitemap_site, $fileFolder);
     $fileName = 'sitemap' . $name_tail . '.xml';
     if (file_put_contents($fileFolder . '/' . $fileName, $sitemap)) {
         $res = $this->generateSitemapIndex($fileFolder, $sitemapFolder, 'dissym');
         return ['flag' => $flag, 'url' => $frontDomain . '/' . $sitemapFolder . '/' . $fileName, 'name' => $fileName, 'siteindex' => $res['url']];
     }
     return [];
 }