Отправка асинхронных запросов на PHP

Discussion in 'PHP' started by xssww2, 18 Apr 2009.

  1. xssww2

    xssww2 Banned

    Joined:
    16 Apr 2009
    Messages:
    25
    Likes Received:
    0
    Reputations:
    0
    Ну типа зделал два варианта:
    1: fsockopen (на некоторых хостингах запрещена)
    2: curl_multi_* (curl не везде установлен)

    Мож кто подскажет как можно еще отправить запрос чтоб скрипт не ждал ответа?

    Сокеты на потом)
     
  2. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Обычная эмуляция...и не прям обязательно использовать курл или fsockopen
    Можно хоть file_get_contents() и fopen(), хоть через расширение сокетов (socket_create и т.д.).
    Ну и плюс к этому всему неблокирующий режим и в цикле вызывать скрипт из самого себя, передавая пост/гет параметры...
    Тогда эмуляция ещё как-то получится.....но в целом для пхп это не имеет смысла
     
  3. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    Да асинхронных наверно и нету в PHP... но чем плох AJAX ? ) вот тебе и асинхронность. Мож че и не правильно говорю в программинге асинхроность я делал посредством потоков, а сокеты всегда юзал блокирующие... в PERL есть fork
    в php насколько я помню тоже есть многопоточность...
     
    _________________________
  4. Zedi

    Zedi Elder - Старейшина

    Joined:
    6 Jun 2007
    Messages:
    316
    Likes Received:
    120
    Reputations:
    13
    ну нееету там многопоточности, сообщения про многопочность в PHP практически каждый день
     
  5. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    набрал в поиске многопоточность в php
    вот урл как раз по данной теме
    http://blog.gtalex.ru/mnogopotochnost-v-php
    http://www.stableversion.com/node/3
    http://habrahabr.ru/blogs/php/40245/

    в общем xssww2 учись гуглить ) пригодится
     
    _________________________
  6. xssww2

    xssww2 Banned

    Joined:
    16 Apr 2009
    Messages:
    25
    Likes Received:
    0
    Reputations:
    0
    Учись читать
     
  7. xssww2

    xssww2 Banned

    Joined:
    16 Apr 2009
    Messages:
    25
    Likes Received:
    0
    Reputations:
    0
    а как через fopen? пробывал вроде как, он не возвращает управление до тех пор, пока вызываемый скрипт не выполнится
     
  8. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    fopen не возвращает никаких данных, она возвращает лишь дескриптор.
    А управление над потоками это задача функций stream_
     
  9. xssww2

    xssww2 Banned

    Joined:
    16 Apr 2009
    Messages:
    25
    Likes Received:
    0
    Reputations:
    0
    Я не грил что он возвращает данные)
    Проясню ситуацию: есть сервер который выполняет свой скрипт и посылает запрос на выполнение скрипта на другом сервере
    так вот, если юзать fopen, то управление в 1й скрипт не вернется пока не выполниться 2й скрипт на другом сервере, а нужно не ждать выполнения скрипта на другом серваке. ну вот)

    не позволяют такое (как я тестил), или ты знаешь способ?
     
  10. D Mak

    D Mak Elder - Старейшина

    Joined:
    23 Jun 2007
    Messages:
    136
    Likes Received:
    27
    Reputations:
    0
    Zedi
    других языков я канешн не знаю, но расскажи как работает "настоящая многопоточность"?
     
  11. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    xssww2 Насчет второго не уверен
    PHP:
        $ctx stream_context_create(array('http' => array('timeout' => ))); 
        @
    file_get_contents('http://localhost/1.php'0$ctx);
    PHP:
    $f fopen('server.name');
    stream_set_blocking($f0);
    fwrite($f,"GET / HTTP/1.1\r\nHost: server.name\r\nConnection: Close\r\n\r\n");
    fclose($f);
     
    _________________________
  12. xssww2

    xssww2 Banned

    Joined:
    16 Apr 2009
    Messages:
    25
    Likes Received:
    0
    Reputations:
    0
    а с таймаутом известная фигня), только не знаю что может "0" означать для этой функции
    надо пытнуть