Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Если скрипт выполняется дольше чем max_execution_t
firstfrost  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 5
Пользователь №: 38806
На форуме: 2 года, 10 месяцев, 3 дня
Карма:




Здравствуйте! Есть необходимость выполнять объемный скрипт, состоящий из однотипных итераций. Чтобы его выполнение не "резалось", он был разделен на части. После завершения текущий части идет вызов следующей через curl.
Верно ли составлен алгоритм, в котором по завершению текущей части, она запускает следующую? Тестирование показывает что 9 из 11 частей срабатывают, а потом 504 и оставшиеся части обрубаются.

Подскажите, как можно решить этот вопрос? Есть ли альтернатива запуску по cron, чтобы запуск каждой следующий части был сразу после завершения текущей?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Цитата
Есть ли альтернатива запуску по cron

Вообще-то именно так и нужно. И не нужно будет делить на части.

Цитата
504

А если запускаешь через браузер – другие части дергай не с сервера, а с клиента.
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
firstfrost  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 5
Пользователь №: 38806
На форуме: 2 года, 10 месяцев, 3 дня
Карма:




Цитата (Guest @ 25.04.2016 - 13:00)
Цитата
Есть ли альтернатива запуску по cron

Вообще-то именно так и нужно. И не нужно будет делить на части.

Цитата
504

А если запускаешь через браузер – другие части дергай не с сервера, а с клиента.

Цитата
Вообще-то именно так и нужно. И не нужно будет делить на части.

Делить на части нужно в любом случае, т.к. выполнение всех итераций за 1 проход дольше максимального времени выполнения скрипта.

Цитата
А если запускаешь через браузер – другие части дергай не с сервера, а с клиента.

Запуск первой части происходит через cron в определенное время, соответственно, ajax тут врятли поможет.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Запускаешь через cron как? Через веб-сервер (иначе кто же тогда 504 отдает):
curl http://site.ru/script.php

Если так – то это неправильно.

Нужно так:
php /home/www/site.ru/script.php

    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
firstfrost  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 5
Пользователь №: 38806
На форуме: 2 года, 10 месяцев, 3 дня
Карма:




да, запускаю через curl, т.к. нужно передать GET-данные.
насколько я знаю, при вызове через php ... GET-переменные не работают.
Верно?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Не работают.
Передают через командную строку:
php /home/www/site.ru/script.php param1 param2 paramN

http://php.net/manual/ru/reserved.variables.argv.php
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
firstfrost  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 5
Пользователь №: 38806
На форуме: 2 года, 10 месяцев, 3 дня
Карма:




Благодарю!
Какие преимущества дает запуск через php ...?
Как это поможет решить данный вопрос?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Ну как минимум не упрешься в Nginx'овский max_execution_time.
Если у тебя VPS/свой сервер – то просто пропиши set_time_limit(0) и не нужно будет делить скрипт на части.
А если shared-хостинг или еще по каким-то причинам нельзя сделать set_time_limit(0) – то следующую часть запускай "асинхронно":
part1.php:

...
shell_exec('php /home/www/site.ru/part2.php &'); // вообще погугли как это правильно делать
exit(0);


Кстати, думаю это должно сработать и если будешь через curl запускать. Может даже не потребуется вообще ничего переделывать.
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 8737
Пользователь №: 26630
На форуме: 5 лет, 9 месяцев, 5 дней
Карма: 591




Цитата (firstfrost @ 25.04.2016 - 13:24)
Какие преимущества дает запуск через php ...?

тем что задача запускается в бэкграунде и не отнимает у вебсервера ресурсы понапрасну.
В CLI php использует другой ini файл, в котором обычно по дефолту нет ограничения времени выполнения. Кстати этот момент нужно учитывать, т.к. нужные расширения в нем могут быть не подключены, тогда нужно передать требуемые ini опции аргументами.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса