каждый!
Я строю «Искатель», чтобы получить цены от 7 сайтов. Я использую cUrl, чтобы получить эти цены, и я имею дело с этой проблемой: Неустранимая ошибка: Превышено максимальное выполнение. Я читал об этом и видел некоторые решения, но я хочу знать, могу ли я разделить процесс больше, чем он есть. Итак, вот мое приложение:
Клиент заходит на мой сайт, ищет несколько кодов товаров ( наихудший Дело в том, один из 5 различных кодов один раз) и отправить запрос на цену. Поэтому я отправляю массив из максимум 5 кодов в мой MainController, который распределяет массив на каждый контроллер, например так:
$codesArray -> MainController -> foreach(ControllersList as Controller){Controller->getPrices($codesArray)}
Я предполагаю, что время выполнения распределено неправильно или не так, как я хочу, потому что я проверил его с 3 кодами и «Неустранимая ошибка: максимальное время выполнения: 30 секунд« приходит через 33 секунды с начала, на пятом контроллере. Я думаю, что невозможно искать 3 элемента 4 раза за 3 секунды и превышать на пятую, поэтому это означает, что сервер считает процесс MainController, а не каждый процесс сам. У меня вопрос, как я могу правильно разделить процесс, чтобы получить распределение времени на контроллер?
Я надеюсь, что я понял себя, извините за плохой английский и плохое объяснение.
НОТА: Я протестировал каждый контроллер с массивом из 7 кодов, и у меня никогда не было этой фатальной ошибки, поэтому я хочу разделить процесс, но я не уверен, как ..
ПРИМЕЧАНИЕ II: Отправка одного кода один раз приведет к еще большему количеству выполнений curl, потому что с массивом процесс повторяет только функции поиска, а не все соединение с веб-сайтом-> проверка входа в систему -> вход в систему * -> поиск
Таймер связан с запросом в целом, не разделен на разные вызовы контроллера. Все время выполнения не может превышать 30 секунд (вы можете увеличить ограничение времени в php.ini
,
Кроме того, они не являются несколькими процессами: PHP является однопоточным, поэтому вы не можете создать другой поток и запустить его. Вы можете попробовать сделать звонки параллельно, используя curl_multi_init()
и затем выполняю обработку (я предполагаю, что вызовы занимают больше времени, чем фактическая обработка).
Других решений пока нет …