вопрос по php + sockets

Discussion in 'PHP' started by md5f1h, 6 Apr 2008.

  1. md5f1h

    md5f1h Member

    Joined:
    26 Jan 2007
    Messages:
    14
    Likes Received:
    8
    Reputations:
    0
    допустим я открыл сокет как его убить если в течении 2х секунд не пришел ответ?
    //всем спасибо вроде сам разобрался
    теперь вопрос в другом как просто сделать чтоб сокет изночально жил 2 сек независимо от результата
     
    #1 md5f1h, 6 Apr 2008
    Last edited: 6 Apr 2008
  2. Sharky

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

    Joined:
    1 May 2006
    Messages:
    487
    Likes Received:
    312
    Reputations:
    46
    ставь таймаут в 2 секунды
     
  3. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    http://php.net/fsockopen
     
  4. md5f1h

    md5f1h Member

    Joined:
    26 Jan 2007
    Messages:
    14
    Likes Received:
    8
    Reputations:
    0
    не дохнет сокет @fsockopen(...., $errno, $errstr, 2);\<- вы про этот тайм аут чтоль? :) сокет должен сдохнуть во время того когда на него поступают данные stream_set_timeout() неподходит именно по этой причине
     
  5. J-Run

    J-Run New Member

    Joined:
    28 Dec 2006
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    socket_set_timeout в помощь ;)
     
  6. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    заводить поток с сокетом и убивать его через 2 сек.

    Небольшая трабла в том, что в пъхп нет потоков.
     
  7. md5f1h

    md5f1h Member

    Joined:
    26 Jan 2007
    Messages:
    14
    Likes Received:
    8
    Reputations:
    0
    можно впринципе поставить время выполнения скрипта на 2 сек и организовать псевдомногопоточность но это мешает моим религиозным взлядам у кого нибудь есть идеи получьше?
     
  8. J-Run

    J-Run New Member

    Joined:
    28 Dec 2006
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    PHP:
    $fp fsockopen($domain,$port
    fwrite($fp$query);
    socket_set_timeout($fp,2); // через 2 сек сокет сдохнет
    while($str fgets($fp,512))
    .................. 
    так-то чем плохо?
     
  9. md5f1h

    md5f1h Member

    Joined:
    26 Jan 2007
    Messages:
    14
    Likes Received:
    8
    Reputations:
    0
    будет работать только в случае если на сокет ничего не идет
    по крайней мере у меня так выходило :)
     
  10. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    подобный софт на пхп не пишется.
    P.s. хотя можно через экстеншн.
     
  11. KSURi

    KSURi tnega AOLPS

    Joined:
    6 Jun 2006
    Messages:
    458
    Likes Received:
    219
    Reputations:
    357
    Создать _неблокирующий_ сокет и закрыть его через 2 секунды
     
  12. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    729
    Reputations:
    266
    Ксурент суко умный)) догадался.