Divide et Impera, чтобы избежать фатальной ошибки: превышено максимальное время выполнения

каждый!

Я строю «Искатель», чтобы получить цены от 7 сайтов. Я использую cUrl, чтобы получить эти цены, и я имею дело с этой проблемой: Неустранимая ошибка: Превышено максимальное выполнение. Я читал об этом и видел некоторые решения, но я хочу знать, могу ли я разделить процесс больше, чем он есть. Итак, вот мое приложение:

Клиент заходит на мой сайт, ищет несколько кодов товаров ( наихудший Дело в том, один из 5 различных кодов один раз) и отправить запрос на цену. Поэтому я отправляю массив из максимум 5 кодов в мой MainController, который распределяет массив на каждый контроллер, например так:

$codesArray -> MainController -> foreach(ControllersList as Controller){Controller->getPrices($codesArray)}

Я предполагаю, что время выполнения распределено неправильно или не так, как я хочу, потому что я проверил его с 3 кодами и «Неустранимая ошибка: максимальное время выполнения: 30 секунд« приходит через 33 секунды с начала, на пятом контроллере. Я думаю, что невозможно искать 3 элемента 4 раза за 3 секунды и превышать на пятую, поэтому это означает, что сервер считает процесс MainController, а не каждый процесс сам. У меня вопрос, как я могу правильно разделить процесс, чтобы получить распределение времени на контроллер?

Я надеюсь, что я понял себя, извините за плохой английский и плохое объяснение.

НОТА: Я протестировал каждый контроллер с массивом из 7 кодов, и у меня никогда не было этой фатальной ошибки, поэтому я хочу разделить процесс, но я не уверен, как ..

ПРИМЕЧАНИЕ II: Отправка одного кода один раз приведет к еще большему количеству выполнений curl, потому что с массивом процесс повторяет только функции поиска, а не все соединение с веб-сайтом-> проверка входа в систему -> вход в систему * -> поиск

0

Решение

Таймер связан с запросом в целом, не разделен на разные вызовы контроллера. Все время выполнения не может превышать 30 секунд (вы можете увеличить ограничение времени в php.ini,
Кроме того, они не являются несколькими процессами: PHP является однопоточным, поэтому вы не можете создать другой поток и запустить его. Вы можете попробовать сделать звонки параллельно, используя curl_multi_init() и затем выполняю обработку (я предполагаю, что вызовы занимают больше времени, чем фактическая обработка).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]