indexuserall.inc.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. if (!defined('IN_DISCUZ')) {
  3. exit('Access Denied');
  4. }
  5. if (empty($_GET['p']) || $_GET['p'] != ($sppasswd = baidu_get_plugin_setting('sppasswd'))) {
  6. baidu_header_status(404);
  7. return 1;
  8. }
  9. $urlsuffix = "&p=$sppasswd";
  10. $sitemapMaxUid = (int) C::t('#baidusubmit#baidusubmit_sitemap')->get_max_end(4); //sitemap表中最大tid
  11. $maxUid = C::t('common_member')->max_uid(); //论坛数据中最大tid
  12. $count = $maxUid - $sitemapMaxUid;
  13. $config = baidu_get_plugin_config();
  14. //新数据够生成一个sitemap时,生成新的sitemap
  15. if (!$sitemapMaxUid || $count >= $config['userItemCount']) {
  16. $sitemapCount = ceil($count / $config['userItemCount']);
  17. $next_uid = $sitemapMaxUid + 1;
  18. for ($i = 0; $i < $sitemapCount; $i++) {
  19. $start_uid = $next_uid + $i * $config['userItemCount'];
  20. $end_uid = $start_uid + $config['userItemCount'] - 1;
  21. $url = 'sitemapuserall&start=' . $start_uid;
  22. C::t('#baidusubmit#baidusubmit_sitemap')->add($url, 4, $start_uid, $end_uid);
  23. }
  24. }
  25. function bs_index_update_last_crawl($offset = 0)
  26. {
  27. $offset = intval($offset);
  28. if ($offset < 0)
  29. return;
  30. if (0 == $offset || $offset != baidu_get_plugin_setting('lastuidcrawl')) {
  31. C::t('#baidusubmit#baidusubmit_setting')->update('lastuidcrawl', $offset, true, false);
  32. }
  33. }
  34. baidu_print_sitemap_index_header();
  35. $site = baidu_get_plugin_setting('siteurl');
  36. $sitemapCount = C::t('#baidusubmit#baidusubmit_sitemap')->get_sitemap_count(4);
  37. $sitemapUrlCount = $config['sitemapUrlCount'] > 0 ? intval($config['sitemapUrlCount']) : 50000;
  38. //全取出来
  39. if ($sitemapCount <= $sitemapUrlCount) {
  40. $sitemaplist = C::t('#baidusubmit#baidusubmit_sitemap')->get_sitemap_list(4, 0, $sitemapCount);
  41. if (count($sitemaplist) > 0) {
  42. baidu_print_sitemap_list($sitemaplist, $site, $urlsuffix);
  43. }
  44. baidu_print_sitemap_index_footer();
  45. bs_index_update_last_crawl();
  46. return 1;
  47. }
  48. //分段取
  49. $lastcrawl = baidu_get_plugin_setting('lastuidcrawl', true);
  50. $time = time();
  51. $pasttime = $time - $lastcrawl['stime'];
  52. if ($pasttime < $config['sitemapStepTime']) { //没到一个时段则按上次的偏移量
  53. $offset = intval($lastcrawl['svalue']);
  54. } else {
  55. $step = $config['sitemapStepLength'];
  56. if ($step > $sitemapUrlCount) {
  57. $step = $sitemapUrlCount;
  58. }
  59. $offset = $lastcrawl['svalue'] + $step * intval($pasttime / $config['sitemapStepTime']);
  60. }
  61. if ($offset > $sitemapCount) {
  62. $offset = 0;
  63. }
  64. $sitemaplist = C::t('#baidusubmit#baidusubmit_sitemap')->get_sitemap_list(4, $offset, $sitemapUrlCount);
  65. if (count($sitemaplist) > 0) {
  66. baidu_print_sitemap_list($sitemaplist, $site, $urlsuffix);
  67. }
  68. //如果溢出了
  69. $overflow = $offset + $sitemapUrlCount - $sitemapCount;
  70. if ($overflow > 0) {
  71. $sitemaplist = C::t('#baidusubmit#baidusubmit_sitemap')->get_sitemap_list(4, 0, $overflow);
  72. if (count($sitemaplist) > 0) {
  73. baidu_print_sitemap_list($sitemaplist, $site, $urlsuffix);
  74. }
  75. }
  76. baidu_print_sitemap_index_footer();
  77. bs_index_update_last_crawl($offset);