За последние 24 часа нас посетили 15729 программистов и 1540 роботов. Сейчас ищут 852 программиста ...

Проблема с Socket не нашел решения подскажете за WM

Тема в разделе "Прочие вопросы по PHP", создана пользователем x999x999x, 3 окт 2008.

  1. x999x999x

    x999x999x Активный пользователь

    С нами с:
    3 окт 2008
    Сообщения:
    3
    Симпатии:
    0
    Суть проблемы такова на сервере WIN server 2003 стоит программа
    Она получает команду от скрипта выполняет ее далее дает ответ о выполнении .
    Все бы да оно нет . Попытка отослать и принять данные через


    <?
    $fp=fsockopen('localhost', 1001);
    fputs($fp,"#ico#828237492374&4427273");
    while(!feof($fp))
    echo fgets($fp,1000);
    fclose($fp);
    ?>

    скрипт выполняется эдак 3-4 минуты и дает ответ
    дело в том что запросы будут поступать эдак 10 в минуту
    искали решение и в другом коде


    $socket = stream_socket_client('localhost:1001');
    stream_socket_sendto($socket ,"#ico#828237492374&4427273", STREAM_OOB);



    отправка была на ура в несколько секунд но для того чтобы получить ответ приходилось обрабатывать через этот скрипт



    $server = stream_socket_server('localhost:1001');
    $socket = stream_socket_accept($server);
    echo "Received Out-Of-Band: '" . stream_socket_recvfrom($socket, 1001, STREAM_OOB) . "'\n";
    fclose($socket);
    fclose($server);

    в итоге такой же результат в 5-6 минут и без ожидаемого ответа
    тестовая программа написанная на Delphi отправляет и получает ответ буквально в 5-8 секунд а со скриптом ничего не хочет работать
    подскажите плиз как можно отправить данные и как только приходит нужный ответ моментально разорвать соединение и остановить скрипт данные начинаются с слова SERVER:
    за наиболее лучшее и скоростное решения готовы заплатить WM
     
  2. Mete0

    Mete0 Активный пользователь

    С нами с:
    18 дек 2006
    Сообщения:
    272
    Симпатии:
    0
    Адрес:
    Gatchina
    А зачем писать это на php, если есть готовая программа на Delphi?

    Скрипт как я понял под CLI?

    Вот пример, переделать несложно:
    http://ru2.php.net/manual/ru/sockets.examples.php

    Работает "быстро".

    Сравниваем полученный ответ с "нужным", если он верный, то выходим из цикла(лов) break; закрываем сокет socket_close() или же socket_close() и exit;
    Остановить скрипт можно с помощью exit; die();
     
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Попробуй fread.