sitemapuserinc.inc.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. if (!defined('IN_DISCUZ')) {
  3. exit('Access Denied');
  4. }
  5. ini_set('memory_limit', '1024M');
  6. set_time_limit(300);
  7. if (empty($_GET['p']) || $_GET['p'] != baidu_get_plugin_setting('sppasswd')) {
  8. baidu_header_status(404);
  9. return 1;
  10. }
  11. $startTime = intval(@$_GET['start']);
  12. $sitemap = baidu_get_sitemap(5, $startTime);
  13. if (empty($sitemap)) {
  14. baidu_header_status(404);
  15. return 1;
  16. }
  17. $endTime = $sitemap['end'];
  18. $client_etag = !empty($_SERVER['HTTP_IF_NONE_MATCH']) ? trim($_SERVER['HTTP_IF_NONE_MATCH']) : false;
  19. if ($client_etag) {
  20. //获取etag中的时间
  21. $client_etag_max_time = intval($client_etag); //取整,去掉后面的无效字符
  22. //起始设成上次的最大值
  23. if ($client_etag_max_time > $startTime) {
  24. $startTime = $client_etag_max_time;
  25. }
  26. if ($client_etag_max_time > $endTime) { //抓取过的数据再次抓取的时候
  27. $etag = $client_etag_max_time;
  28. header('HTTP/1.1 304 Not Modified');
  29. header('ETag: ' . $etag);
  30. return 1;
  31. }
  32. }
  33. //清掉钩子
  34. $_G['setting']['plugins']['func'] = array();
  35. $etag = time();
  36. header('ETag: ' . $etag);
  37. $config = baidu_get_plugin_config();
  38. $uids = C::t('#baidusubmit#common_member_status_baidu')->get_uids_by_lastvisit($startTime, $endTime, $config['userItemCount']);
  39. $indexsplitsitemap = false;
  40. $uidCount = count($uids);
  41. if ($uidCount == $config['userItemCount']) {
  42. $indexsplitsitemap = true;
  43. }
  44. $itemCount = 0;
  45. global $_G;
  46. header('Content-Type: text/xml');
  47. echo '<?xml version="1.0" encoding="UTF-8"?><urlset>';
  48. $sizesplitsitemap = false;
  49. $userList = baidu_get_user($uids);
  50. $groupDict = C::t('#baidusubmit#common_usergroup_baidu')->fetch_dict();
  51. foreach ($userList as $user) {
  52. $body = baidu_forum_user_body_build($user, $groupDict);
  53. if ($body) {
  54. $itemCount++;
  55. }
  56. echo $body;
  57. flush();
  58. }
  59. echo '</urlset>';
  60. //记录相关数据
  61. $timeLost = intval(1000 * (microtime(true) - $_G['starttime']));
  62. C::t('#baidusubmit#baidusubmit_sitemap')->update_by_sid(
  63. $sitemap['sid'], array('item_count' => $itemCount, 'lost_time' => $timeLost));
  64. baidu_update_url_stat($itemCount);