';
public $xmlEnd = '';
public $xmlData = '';
public $txtData = '';
public $defaultDate;
public $defaultChangeFreq;
public $defaultPriority;
/**
* @var int 官网类型 与 Article表use_type 同步 0 乐外卖官网 1 逐趣同城 2 逐趣校园
*/
private $type;
public function __construct($type)
{
$this->type = $type;
$this->defaultDate = date("Y-m-d", strtotime("-1 days"));
$this->defaultChangeFreq = 'daily';
$this->defaultPriority = 0.6;
}
/**
* 生成 sitemap.xml 内容
*
* @param $data
*
* @author lizhi <1458705589@qq.com>
* @date 2021/7/29
*/
public function generateXml($data = [])
{
$dataXml = '';
foreach ($data as $datum) {
if (!isset($datum['url']) || empty($datum['url'])) {
continue;
}
$url = $datum['url'];
$time = isset($datum['time']) ? $datum['time'] : $this->defaultDate;
$changeFreq = isset($datum['changefreq']) ? $datum['changefreq'] : $this->defaultChangeFreq;
$priority = isset($datum['priority']) ? $datum['priority'] : $this->defaultPriority;
$dataXml.=<<
{$url}
{$time}
{$changeFreq}
{$priority}
EOF;
}
$this->xmlData = "{$this->xmlBegin}
{$dataXml}
{$this->xmlEnd}";
}
/**
* 生成 sitemap.txt 内容
*
* @param $data
*
* @author lizhi <1458705589@qq.com>
* @date 2021/7/29
*/
public function generateTxt($data)
{
$dataText = '';
foreach ($data as $datum) {
if (!isset($datum['url']) || empty($datum['url'])) {
continue;
}
$url = $datum['url'];
$dataText.= $url . "\n";
}
$this->txtData = "{$dataText}";
}
/**
* 网页下载 sitemap.xml
*
* @author lizhi <1458705589@qq.com>
* @date 2021/7/29
*/
public function downLoadXml()
{
if (empty($this->xmlData)) {
throw new \Exception("empty xml data");
}
header("Content-Type:text/xml charset=UTF-8");
header("Content-Disposition:attachment; filename=sitemap.xml");
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header('Expires:0');
header('Pragma:public');
$fp = fopen('php://output', 'a');
fwrite($fp, $this->xmlData);
fclose($fp);
die();
}
/**
* 网页下载 sitemap.txt
*
* @author lizhi <1458705589@qq.com>
* @date 2021/7/29
*/
public function downLoadTxt()
{
if (empty($this->txtData)) {
throw new \Exception("empty txt data");
}
header("Content-Type:text/text charset=UTF-8");
header("Content-Disposition:attachment; filename=sitemap.txt");
header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
header('Expires:0');
header('Pragma:public');
$fp = fopen('php://output', 'a');
fwrite($fp, $this->txtData);
fclose($fp);
die();
}
public function getXmlDate()
{
return $this->xmlData;
}
public function getTxtDate()
{
return $this->txtData;
}
public function syncTxtToOffice()
{
if (empty($this->txtData)) {
return "生成数据错误";
}
$urlList = [
Article::TYPE_ZHUQU_CITY => 'https://www.zhuqutongcheng.com/site/UpdateSiteMapTxt',
Article::TYPE_ZHUQU_SCHOOL => 'https://www.zhuquxiaoyuan.com/site/UpdateSiteMapTxt',
Article::TYPE_LEWAIMAI => 'https://www.lewaimai.com/site/UpdateSiteMapTxt',
];
if (!Helper::isProductEnv()) {
// 测试环境
$urlList = [
Article::TYPE_ZHUQU_CITY => 'http://tc.lewaimai.com/site/UpdateSiteMapTxt',
Article::TYPE_ZHUQU_SCHOOL => 'http://xy.lewaimai.com/site/UpdateSiteMapTxt',
Article::TYPE_LEWAIMAI => 'http://office.lewaimai.com/site/UpdateSiteMapTxt',
];
}
if (!isset($urlList[$this->type])) {
return '类型错误';
}
$gzData = gzcompress($this->txtData);
return LewaimaiHttp::POST($urlList[$this->type], [
'data' => $gzData,
'sign' => Helper::getSign($gzData)
]);
}
public function syncXmlToOffice()
{
if (empty($this->xmlData)) {
return "生成数据错误";
}
$urlList = [
Article::TYPE_ZHUQU_CITY => 'https://www.zhuqutongcheng.com/site/UpdateSiteMapXml',
Article::TYPE_ZHUQU_SCHOOL => 'https://www.zhuquxiaoyuan.com/site/UpdateSiteMapXml',
Article::TYPE_LEWAIMAI => 'https://www.lewaimai.com/site/UpdateSiteMapXml',
];
if (!Helper::isProductEnv()) {
// 测试环境
$urlList = [
Article::TYPE_ZHUQU_CITY => 'http://tc.lewaimai.com/site/UpdateSiteMapXml',
Article::TYPE_ZHUQU_SCHOOL => 'http://xy.lewaimai.com/site/UpdateSiteMapXml',
Article::TYPE_LEWAIMAI => 'http://office.lewaimai.com/site/UpdateSiteMapXml',
];
}
if (!isset($urlList[$this->type])) {
return '类型错误';
}
$gzData = gzcompress($this->xmlData);
return LewaimaiHttp::POST($urlList[$this->type], [
'data' => $gzData,
'sign' => Helper::getSign($gzData)
]);
}
}