Просмотр полной версии : Отправка асинхронных запросов на PHP
Ну типа зделал два варианта:
1: fsockopen (на некоторых хостингах запрещена)
2: curl_multi_* (curl не везде установлен)
Мож кто подскажет как можно еще отправить запрос чтоб скрипт не ждал ответа?
Сокеты на потом)
.:EnoT:.
18.04.2009, 12:46
Обычная эмуляция...и не прям обязательно использовать курл или fsockopen
Можно хоть file_get_contents() и fopen(), хоть через расширение сокетов (socket_create и т.д.).
Ну и плюс к этому всему неблокирующий режим и в цикле вызывать скрипт из самого себя, передавая пост/гет параметры...
Тогда эмуляция ещё как-то получится.....но в целом для пхп это не имеет смысла
Да асинхронных наверно и нету в PHP... но чем плох AJAX ? ) вот тебе и асинхронность. Мож че и не правильно говорю в программинге асинхроность я делал посредством потоков, а сокеты всегда юзал блокирующие... в PERL есть fork
в php насколько я помню тоже есть многопоточность...
в php насколько я помню тоже есть многопоточность...
ну нееету там многопоточности, сообщения про многопочность в PHP практически каждый день
набрал в поиске многопоточность в php
вот урл как раз по данной теме
http://blog.gtalex.ru/mnogopotochnost-v-php
http://www.stableversion.com/node/3
http://habrahabr.ru/blogs/php/40245/
в общем xssww2 учись гуглить ) пригодится
в общем xssww2 учись гуглить ) пригодится
Учись читать
Можно хоть file_get_contents() и fopen()
Ну и плюс к этому всему неблокирующий режим и в цикле вызывать скрипт из самого себя, передавая пост/гет параметры...
а как через fopen? пробывал вроде как, он не возвращает управление до тех пор, пока вызываемый скрипт не выполнится
.:EnoT:.
18.04.2009, 18:25
fopen не возвращает никаких данных, она возвращает лишь дескриптор.
А управление над потоками это задача функций stream_
fopen не возвращает никаких данных, она возвращает лишь дескриптор.
А управление над потоками это задача функций stream_
Я не грил что он возвращает данные)
Проясню ситуацию: есть сервер который выполняет свой скрипт и посылает запрос на выполнение скрипта на другом сервере
так вот, если юзать fopen, то управление в 1й скрипт не вернется пока не выполниться 2й скрипт на другом сервере, а нужно не ждать выполнения скрипта на другом серваке. ну вот)
Можно хоть file_get_contents() и fopen()_
не позволяют такое (как я тестил), или ты знаешь способ?
Zedi
других языков я канешн не знаю, но расскажи как работает "настоящая многопоточность"?
xssww2 Насчет второго не уверен
$ctx = stream_context_create(array('http' => array('timeout' => 0 )));
@file_get_contents('http://localhost/1.php', 0, $ctx);
$f = fopen('server.name');
stream_set_blocking($f, 0);
fwrite($f,"GET / HTTP/1.1\r\nHost: server.name\r\nConnection: Close\r\n\r\n");
fclose($f);
xssww2 Насчет второго не уверен
$ctx = stream_context_create(array('http' => array('timeout' => 0 )));
@file_get_contents('http://localhost/1.php', 0, $ctx);
а с таймаутом известная фигня), только не знаю что может "0" означать для этой функции
надо пытнуть
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot