sitemapuserall.inc.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. $start_uid = intval($_GET['start']);
  12. $sitemap = baidu_get_sitemap(4, $start_uid);
  13. if (empty($sitemap)) {
  14. baidu_header_status(404);
  15. return 1;
  16. }
  17. $end_uid = $sitemap['end'];
  18. $client_etag = !empty($_SERVER['HTTP_IF_NONE_MATCH']) ? trim($_SERVER['HTTP_IF_NONE_MATCH']) : false;
  19. if ($client_etag) {
  20. $client_etag_max_uid = intval($client_etag); //取整,去掉后面的无效字符
  21. //起始id设成上次的最大值
  22. if ($client_etag_max_tid > $start_uid) {
  23. $start_uid = $client_etag_max_uid;
  24. }
  25. if ($client_etag_max_uid >= $end_uid) { //抓取过的数据再次抓取的时候
  26. $etag = $client_etag;
  27. header('HTTP/1.1 304 Not Modified');
  28. header('ETag: ' . $etag);
  29. return 1;
  30. }
  31. }
  32. //清掉钩子
  33. $_G['setting']['plugins']['func'] = array();
  34. //设成最后的值
  35. $etag = $end_uid;
  36. header('ETag: ' . $etag);
  37. $itemCount = 0;
  38. header('Content-Type: text/xml');
  39. echo '<?xml version="1.0" encoding="UTF-8"?><urlset>';
  40. $userList = baidu_get_user($start_uid);
  41. $groupDict = C::t('#baidusubmit#common_usergroup_baidu')->fetch_dict();
  42. foreach ($userList as $user) {
  43. $body = baidu_forum_user_body_build($user, $groupDict);
  44. if ($body) {
  45. $itemCount++;
  46. }
  47. echo $body;
  48. flush();
  49. }
  50. echo '</urlset>';
  51. global $_G;
  52. $timeLost = intval(1000 * (microtime(true) - $_G['starttime']));
  53. C::t('#baidusubmit#baidusubmit_sitemap')->update_by_sid(
  54. $sitemap['sid'], array('item_count' => $itemCount, 'lost_time' => $timeLost));
  55. baidu_update_url_stat($itemCount);