2013-10-14 5 views
2

Я использую file_get_contents/curl, чтобы получить доступ для одного API на другом сервере из моего php-скрипта. Этот API не работает быстро и может занять до 10 секунд.file_get_contents/curl блокирует других клиентов

Когда я пытаюсь открыть 2 страницы на моем веб-сайте в то же время, в котором используется этот API, они загружаются один за другим, то есть мне нужно ждать 1-го для загрузки до того, как сервер начнет запрос сервера на 2-ю страницу ,

Я использую Apache2 и php под linux. Как я могу избежать такого поведения, я не хочу блокировать других клиентов, в то время как один из них получает доступ к этому API. Нужна помощь!

Спасибо.

+5

сеанс не может быть открыт дважды в одно и то же время. Используйте 'session_write_close();' когда вы хотите освободить сеанс для другого процесса или потока. – bwoebi

+0

О, мужик, большое спасибо! Ты спас мой день :))) – let4be

+0

Я только догадался ... ^^ Это обычная проблема. И да, это трудно для Google ... – bwoebi

ответ

0

Да.

Существует эта библиотека PHP: http://code.google.com/p/multirequest/ (это многопоточная библиотека CURL).

В качестве другого решения вы можете написать сценарий, который делает это на языке, который поддерживает потоки, такие как Ruby или Python. Затем просто вызовите скрипт с PHP. Кажется довольно простым.

+0

bwoebi описал правильное решение. Это, кажется, так сложно найти в Google и документации. – let4be

+0

дополнительно, что не использует несколько потоков _at all_, он использует неблокирующий ввод-вывод ... –

Смежные вопросы