Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Для профи > CURL расходует много памяти! |
Автор: kanaris 29.10.2010, 22:13 | ||
Всем привет! Создал многопоточный скрипт прокси-чекер (за счет функций curl_multi_*). Проверяет прокси, одновременно в 10-20 потоков. Как только ответ от прокси получен, дескриптор удаляется, на его место ставится следующее прокси. Поставил работать скрипт, работает довольно быстро. Но где-то на 950-м прокси компьютер затормозил. В диспетчере задач файл подкачки использован почти под завязку! Трассировал хДебагом, он показывает изменения памяти максимум мегабайт на 5. Но фактически файл подкачки увеличивается в объеме мегабайт на 500-1000! Вот скрин диспетчера: ![]() Сам скрипт:
Как решить проблему? |
Автор: masp 29.10.2010, 23:21 |
попробуй на UNIXе запустить, а также читал где то unset реально не осовбождает память, http://www.rsdn.ru/forum/web/2194680.flat.aspx и вот ещё http://rmcreative.ru/blog/post/utechki-pamjati-v-php |
Автор: Pfailed 28.11.2010, 22:06 | ||
Может быть не складывать в массив?
Не удивительно, что это может сожрать память. |
Автор: kanaris 6.12.2010, 18:50 | ||
даже если я закоментирую это, всеравно жрет. |
Автор: topy 6.12.2010, 22:28 |
Как вам уже написали, попробуйте на Unix`е запустить. Говорят, что curl.exe некорректно работает. |
Автор: vfz4z 22.12.2011, 15:43 |
дайте мне список прокси и я сам запущу этот скрипт... Очень походе что память не освобождает curl. У меня под рукой так-же несколько win серверов, так что интересно будет протестить всё это дело и сравнить результаты... Хотя вопрос наверное уже мёртв) |
Автор: MuToGeN 10.1.2012, 02:37 |
Хехе, знакомая задача. Когда-то делал аналогичное для одного проекта. Посетителей надо было пробивать на то, с прокся они заходят или нет. Из собственного опыта: 1. Нормальной многопоточности в PHP нет и никогда не было, даже в CLI SAPI. Да, про pcntl знаю. 2. Если только PHP, то организовывать лучше как "мастер-слейв". Мастер запускает дочерний процесс, который принимает задачу с командной строки, куда-то отписывается о результате и успешно завершает исполнение. В этом случае ОС следит за всеми возможными косяками по утечкам памяти. 3. Если это под серьёзные промышленные нагрузки, то лучше старый-добрый C, тот же curl и pthreads. Потому что задача по большому счету не для похапе. 3.1 Если это под действительно серьезные промышленные нагрузки, то забудьте про windows. Добавлено через 44 секунды Чорт ![]() |
Автор: kanaris 22.8.2012, 22:28 | ||||||
Да чо, я иногда почитываю свои старые темы, а вдруг ответили что нибудь толкового =) Просто как правило, вопросы не решаются, поэтому идея забрасывается в дальний угол, до поры до времени. Вопросы всегда актуальны для меня...
Прокси обычные паблик, например http://samair.ru/proxy/ |