Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Перенаправление между страницами в crontab
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Перенаправление между страницами в crontab

Страниц (1): [1]
 

1. igosja - 08 Ноября, 2013 - 18:49:19 - перейти к сообщению
Здравствуйте, нужна помощь в следующем вопросе.

На сайте есть необходимость постоянной обработки больших циклов (обновление бд через цикл). Так как на хостинге стоят ограничения на использование процессорного времени, приходиться разбивать цикл на несколько маленьких и запускать их цепочкой.

Выглядит это так:
Файл 1.php
PHP:
скопировать код в буфер обмена
  1. include '../database.php';
  2. if (isset($_GET['limit']))
  3. {
  4.         $limit = mysql_escape_string($_GET['limit']);
  5. }
  6. else
  7. {
  8.         $limit = 0;
  9. }
  10. $sql = mysql_query("    SELECT `table_id`
  11.                         FROM `table`
  12.                         ORDER BY `table_id` ASC
  13.                         LIMIT $limit, 10");
  14. $count_sql = mysql_num_rows($sql);
  15. if ($count_sql > 0) //если выбрались какие-то данные
  16. {
  17.         for ($i=0; $i<$count_sql; $i++)
  18.         {
  19.                 $table_id = mysql_result($sql,$i,'table_id');
  20.                 //обрабатываем данные и обновляем таблицу
  21.         }
  22.         $limit = $limit + 10; //увеличиваем лимит
  23.         $href = '1.php?limit='.$limit;
  24.         print   '<script type="text/javascript">
  25.                 function doit()
  26.                 {
  27.                         window.location.href="'.$href.'";
  28.                 }
  29.                 setTimeout(doit, 2000);
  30.                 </script>'; // и перезапускаем файл
  31. }
  32. else //если все данные уже обработаны, запускаем второй файл
  33. {
  34.         $href = '2.php?limit=0';
  35.         print   '<script type="text/javascript">
  36.                 function doit()
  37.                 {
  38.                         window.location.href="'.$href.'";
  39.                 }
  40.                 setTimeout(doit, 2000);
  41.                 </script>';
  42. }
  43.  

При запуске руками в браузере файлы работают нормально, но в crontab нет браузера, который бы выполнял js или header(location).

Как реализовать такой редирект в crontab?
2. T1grOK - 08 Ноября, 2013 - 20:07:56 - перейти к сообщению
Так для crontab установите необходимый период запуска, а данные о limit храните в файле или БД.
3. igosja - 08 Ноября, 2013 - 20:12:43 - перейти к сообщению
T1grOK пишет:
Так для crontab установите необходимый период запуска, а данные о limit храните в файле или БД.

Просто как пельмени, а я себе уже 3 день голову ломаю как сэмулировать браузер в консоли. Спасибо большое.
4. Ch_chov - 09 Ноября, 2013 - 11:38:22 - перейти к сообщению
igosja пишет:
день голову ломаю как сэмулировать браузер в консоли
А зачем? Для консоли тоже установлено ограничение времени?
5. caballero - 09 Ноября, 2013 - 12:38:48 - перейти к сообщению
ограничение времени вообще то ставиться для работы PHP скрипта, а ему все равно консоль или нет
6. Ch_chov - 09 Ноября, 2013 - 13:23:19 - перейти к сообщению
caballero пишет:
а ему все равно консоль или нет

У консольного PHP обычно свой php.ini и соотвенно другое значение в max_execution_time

 

Powered by ExBB FM 1.0 RC1