Как я могу получить бесконечное максимальное время выполнения с PHP?
У меня есть сайт с 2000 страницами, и я хочу перебирать каждую страницу для создания карты сайта, используя file_get_html()
функция и регулярные выражения.
Очевидно, что это не может быть выполнено за одно выполнение на стороне сервера, так как у него закончится время из-за максимального времени выполнения. Я предполагаю, что это должно выполнить меньшие действия, сохранить прогресс в базу данных и затем поставить в очередь следующую задачу. Какие-либо предложения?
5 ответов
Когда вы запустите командную строку, не будет максимального времени выполнения.
Вы также можете использовать set_time_limit(0);
для этого, если ваш поставщик разрешает манипуляции.
Я не могу сказать, будет ли забанен ваш ip-адрес - это зависит от безопасности сервера, на который вы отправляете свои запросы.
Другое решение
Вы можете выбрать одну (или несколько) страниц и искать новые URL по всему исходному коду. Затем вы можете поставить их в очередь в базе данных. Затем при следующем запуске вы обрабатываете очередь.
Использование set_time_limit(0)
, Смотрите руководство по PHP для более подробного объяснения.
секунд
Максимальное время выполнения в секундах. Если установлено в ноль, ограничение по времени не накладывается.
РЕДАКТИРОВАТЬ: Что касается вашего второго вопроса, маловероятно, однако, вы должны проверить условия использования вашего хостинга, чтобы увидеть, если это разрешено.
Установите max_execution_time на 0 в вашем php.ini. Это повлияет на каждый скрипт, который вы запускаете на сервере, но если вы ищете исправление на уровне сервера, это сделает это.
http://php.net/manual/en/info.configuration.php
max_execution_time = 0
Лучший способ для вас это использовать Remot API. Например, вы можете использовать import.io и получать параметры с каждой страницы в формате json. это способ получить легкую страницу при каждом вызове для file_get_content или flie_get_html
но для этого выпуска curl лучше, чем file_get_html