php/timeout/connection к серверу сбрасывается?

Насколько я понимаю его, это - узел, который не является листом.

5
задан Mickey 22 October 2009 в 22:43
поделиться

5 ответов

Ну, не обращая внимания на тот факт, что попытка 100 000 запросов cURL абсолютно безумна, вы, вероятно, достигли предела памяти.

Попробуйте установить предел памяти на что-нибудь более разумное:

ini_set('memory_limit', '256M');

И как побочный совет, не устанавливайте время выполнения на что-то нелепое, есть вероятность, что вы в конечном итоге найдете способ добиться этого с помощью такого сценария. ;]

Вместо этого просто установите его на 0 , это функционально эквивалентно полному отключению ограничения выполнения:

ini_set('max_execution_time', 0);
4
ответ дан 14 December 2019 в 01:11
поделиться

Множество идей:

1) Не делайте этого внутри HTTP-запроса. Напишите php-скрипт командной строки, чтобы управлять им. Вы можете использовать связанный с Интернетом скрипт, чтобы запустить его, если необходимо.

2) Вы должны иметь возможность установить max_execution_time равным нулю (или вызвать set_time_limit (0)), чтобы гарантировать, что вы не отключитесь при превышении ограничение по времени

3) Похоже, вы действительно хотите реорганизовать это в нечто более разумное. Подумайте о настройке небольшой системы очередей заданий и наличии php-скрипта, который заставит нескольких детей выполнять всю работу.

Как говорит Джош, посмотрите свой error_log и поймите, почему вас сейчас закрывают. Попробуйте выяснить, сколько памяти вы используете - это может быть проблемой. Попробуйте установить max_execution_time равным нулю. Может быть, это быстро доставит вас туда, куда вам нужно.

Но в конечном итоге похоже, что у вас слишком много работы внутри одного HTTP-запроса. Убери его из http, разделяй и властвуй!

3
ответ дан 14 December 2019 в 01:11
поделиться

Вы можете установить время ожидания неопределить, изменив ваш PHP.ini и установив переменную выполнения скрипта.

Но вы также можете рассмотреть небольшое изменение архитектуры. Сначала рассмотрите подход «запустил и забыл» при получении 100 000 запросов curl. Во-вторых, подумайте об использовании "wget" вместо curl.

Вы можете ввести простой " wget URL -o UniqueFileName & ". Это будет извлекать веб-страницу, сохранять ее с «уникальным» именем файла и все в фоновом режиме.

Затем вы можете перебирать каталог файлов, данные greping (preg_matching) и выполнять вызовы БД. Перемещайте файлы по мере их обработки в архив и продолжайте итерацию, пока не кончатся файлы.

Думайте о каталоге как о «очереди» и пусть один процесс просто обрабатывает файлы. Попросите второй процесс просто выйти и захватить данные веб-страницы. Вы можете добавить третий процесс, который вы можете «контролировать», который работает независимо и просто сообщает статистику моментальных снимков. Два других могут быть просто «веб-сервисами» без интерфейса.

Этот тип многопоточности действительно мощный и малоиспользуемый ИМХО. Для меня это настоящая сила Интернета.

1
ответ дан 14 December 2019 в 01:11
поделиться

100 000 запросов cURL ??? Ты безумец. Разбей эти данные!

0
ответ дан 14 December 2019 в 01:11
поделиться

Что находится в apache error_log? Вы достигли предела памяти?

РЕДАКТИРОВАТЬ: Похоже, вы достигли предела памяти. У вас есть доступ к PHP.ini? Если это так, вы можете поднять там memory_limit . Если нет, попробуйте запустить двоичные файлы curl или wget с помощью функций exec или shell_exec , чтобы они выполнялись как отдельные процессы, не используя память PHP.

0
ответ дан 14 December 2019 в 01:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: