[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Возможен ли ассинхронный curl запрос
Страницы: 1, 2, 3, 4, 5, 6, 7
killer8080
SoMeOnE
Тут надо исходить из того, где именно происходит задержка? Долго устанавливается соединение с сервером, или ожидание ответа? Если задержка с ответом, то проблему можно обойти, если не дожидаться ответа сервера. Шлем запрос через сокет, и тут же закрываем соединение.
SoMeOnE
killer8080, а как установить с чем имено проблемы. Скорей всего проблемы с ответом. Пока запостит, пока ответ придет.
А тот метод, которым я сейчас делаю неоптимален?

P.S ну я понял как посмотреть где заддержка. Просто замеры сдлаю))
killer8080
Цитата (SoMeOnE @ 5.02.2014 - 10:08)
А тот метод, которым я сейчас делаю неоптимален?

Ну он требует запуска дополнительного процесса, в принципе проблем нет, если такие запросы не часты, и есть возможность запускать консольные скрипты.

Цитата (SoMeOnE @ 5.02.2014 - 08:45)
Можешь показать легкий пример с форками, чтобы разобраться.

форки не прокатят из под апача
SoMeOnE
инициализация происходит мнгновенно.
а вот этот код
curl_setopt($ch, CURLOPT_URL,'https://graph.facebook.com/'.$post['userid'].'/feed');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //to suppress the curl output

$result= curl_exec($ch);
curl_close ($ch);

около 3 секунд обрабатывается
SoMeOnE
MiksIr, прочитав про мультикурл я не разобрался как послать запрос, чтобы скрипт продолжил работу.
Как я понял, можно просто много самих курл запросов посылать параллельно. нет?
На данный момент я сделал так. работает.
exec("nohup php -q /var/www/domain/fb_post.php access_token={$post['access_token']} userid={$post['userid']} name={$user['name']} photo_name={$article['photo_name']}  >> script_log.txt 2>&1 &");

Это нормально?


Сколько оказывается вариантов есть)
killer8080
Цитата (MiksIr @ 5.02.2014 - 10:28)
Теоретически - прокатят, почему бы нет.

потому что php не может форкать процесс апача.
Цитата (MiksIr @ 5.02.2014 - 10:25)
Как раз форки - это не асинхронная работа.

да не уж то user posted image
SoMeOnE
пример на сокетах
$fh = @fsockopen($domen, $port, $err_num, $err_str, $timeout);
if ($fh) {
$query = http_build_query($post_data);
fwrite($fh,
"POST $uri HTTP/1.0\r\n" .
"Host: $domen\r\n" .
"Content-Length: " . strlen($query) . "\r\n" .
"Content-Type: application/x-www-form-urlencoded\r\n\r\n" .
$query
);
fclose($fh);
}
SoMeOnE
Цитата (MiksIr @ 5.02.2014 - 08:44)
Вам нужно, что бы скрипт продолжил работу или что бы он завершил ее и сказал клиенту "все ок", а сам при этом постил в фейсбук?

Мне нужно, чтобы скрипт мне вернул success об успешном добавлении в базу.А сам продолжал постить в фб.

Скрипт до возвращении success, начинает пост в фб. На данный момент запустил отдельный процесс, как советовали лучше. Он уже не спотыкается. Сразу возвращает овтет. А на фб появляется, через 2-3 секунды.
SoMeOnE
killer8080, спасибо за прмиер. С ним тоже буду разбираться.
killer8080
если одна задача выполняется в родительском процессе, а другая в дочернем, независимо друг от друга разве это не асинхронность?
Цитата (MiksIr @ 5.02.2014 - 10:50)
Но асинхронность может быть и без форка.

это бесспорно smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.