piterskiy

Отложенная публикация постов

Apr 14th, 2016
24,467
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. $stack = array();
  4.  
  5. // кол-во публикаций в базе
  6. $posts = 10000;
  7. // период публикаций 180 дней или 1/2 года или пол-года
  8. $period = 30*6;
  9.  
  10. $pd = intval($posts/$period);
  11.  
  12. print $pd." posts.<br>";
  13. print (24*60*60)." sec/day<br>";
  14.  
  15. $interval_seconds = intval((24*60*60)/$pd);
  16. $interval_minutes = intval((24*60)/$pd);
  17.  
  18. print $interval_seconds." sec - for post interval<br><br>";
  19. print $interval_minutes." min - for post interval<br><br>";
  20.  
  21. print mt_rand($interval_minutes,$interval_minutes+1)."<br>";
  22.  
  23. ?>
  24. <?php
  25.  set_time_limit(0);  
  26.  
  27.  class db {}
  28.  require_once('engine/data/dbconfig.php');  
  29.  
  30.  if  (!mysql_connect(DBHOST,DBUSER, DBPASS) || !mysql_select_db(DBNAME))  trigger_error('Can not connect to database',E_USER_ERROR);  
  31.  
  32.  $query="SELECT * FROM `".PREFIX."_post`";
  33.  $result = mysql_query($query) or trigger_error('SQL: Query error at line '.__LINE__,E_USER_ERROR);  
  34.  
  35.  // —читаем кол-во постов в базе DLE
  36.  $count=0;
  37.  if (mysql_num_rows($result)>0) while ($row = mysql_fetch_assoc($result)) {
  38.    if (file_exists('stop.txt')) die('Cancel by the user!');
  39.    $count++;
  40.    //print $count."<br>";
  41.    //$query="UPDATE `".PREFIX."_post` SET `date`= DATE_ADD(FROM_DAYS( FLOOR( TO_DAYS( NOW( )) +  ( RAND( ) * 1560 ) -  ( RAND( ) *730 ) ) ), INTERVAL  (FLOOR(RAND()*86400)) SECOND)  WHERE `id`=".intval($row['id']);
  42.    //print(intval($row['id']))."<br>";
  43.    //mysql_query($query) or trigger_error('SQL: Query error at line '.__LINE__,E_USER_ERROR);
  44.  }
  45.  
  46.  print "Here is ".$count." posts.<br>";
  47.  
  48. date_default_timezone_set('Asia/Novosibirsk');
  49. #$start_date = new DateTime("$date1");
  50. #$end_date = new DateTime("$date2");
  51. #$interval = $start_date->diff($end_date);
  52.  
  53. #$days = $interval->d;
  54. #$months = $interval->m;
  55. #$years = $interval->y;
  56. #$hours = $interval->h;
  57. #$mins = $interval->i;
  58. #$secs = $interval->s;
  59.  
  60.  
  61. // ѕеременна¤ дл¤ прибавлени¤ дат от текущей даты
  62. $date_current_plus = new DateTime(date("Y-m-d H:i:s"));
  63. // ѕеременна¤ дл¤ вычитани¤ дат от текущей даты
  64. $date_current_minus = new DateTime(date("Y-m-d H:i:s"));
  65.  
  66.  
  67.  
  68. print "Current Date: ".$date_current_plus->format('Y-m-d H:i:s')."<br>";
  69. $rand = mt_rand(500,733);
  70. print " ол-во опубликованных записей:".$rand."<br>";
  71.  
  72.  
  73.  
  74. for($i=0;$i<$count;$i++){
  75. $hours = 0;
  76. $seconds = mt_rand($interval_seconds,$interval_seconds+(mt_rand(1,25)*60));
  77.  
  78. $interval = new DateInterval('PT'.$hours.'H'.$seconds.'S');
  79.  
  80.  
  81.  
  82. if($i>$rand){
  83. print "11 - ";
  84. $date_current_plus->add($interval);
  85. $date = $date_current_plus;
  86. }else{
  87. print "22 - ";
  88. $date_current_minus->sub($interval);   
  89. $date = $date_current_minus;
  90. }
  91.  
  92.  
  93. echo "$i ".$date->format('Y-m-d H:i:s') . " / ";
  94.  
  95. array_push($stack,$date->format('Y-m-d H:i:s'));
  96.  
  97.  
  98.  
  99. $cnt++;
  100. if(intval($date->format('d'))!=$old_day){
  101. print "<hr>".$old_day." - $cnt posts / $old_day<hr>";
  102. $cnt=0;
  103. }
  104.  
  105.  
  106. $old_day = intval($date->format('d'));
  107.  
  108. print " - interval <b>$seconds s or ".gmdate("H:i:s", $seconds)." m</b><br>\n";
  109.  
  110. }
  111.  
  112. //print_r($stack)."<br>";
  113.  
  114. // ѕишем распределение дат постов в базу MySQL
  115.  
  116.  
  117.  $query="SELECT * FROM `".PREFIX."_post`";
  118.  $result = mysql_query($query) or trigger_error('SQL: Query error at line '.__LINE__,E_USER_ERROR);  
  119.  
  120. $count=0;
  121.  if (mysql_num_rows($result)>0) while ($row = mysql_fetch_assoc($result)) {
  122.    if (file_exists('stop.txt')) die('Cancel by the user!');
  123.  
  124.    $query="UPDATE `".PREFIX."_post` SET `date`= '".trim($stack[$count])."'  WHERE `id`=".intval($row['id']);
  125.    //print(intval($row['id']))."<br>";
  126.    mysql_query($query) or trigger_error('SQL: Query error at line '.__LINE__,E_USER_ERROR);
  127.    $count++;
  128.  }
  129.  
  130.  print "<br>".$count." posts has been updated<br>";
  131.  
  132. ?>
Add Comment
Please, Sign In to add comment