PHP脚本在套接字编程期间挂起


PHP script hangs up during socket programming

当我在firebug 中看到时,我的简单php脚本就挂断了

    <?php
require 'FirePHPCore/fb.php';
ob_start();
session_start();

FB::log('Log message');
//FB::info('Info message');
//FB::warn('Warn message');
//FB::error('Error message');

        FB::info('i m inside');
        $fileCount = $_POST['count'];
        $data = "i-" . $fileCount;
        FB::info('data for server ' . $data);
        $address = '127.0.0.1';
    $port = 5555;
    set_time_limit(0);
    $socket = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp'));
    socket_connect($socket, $address, $port);
        FB::info('socket connect ');
    $len = strlen($data);
    $status = socket_sendto($socket, $data, $len, 0, $address, $port);

        $input = socket_read($socket, 1024);
        echo $input;    
    socket_close($socket);

     FB::log('i m deadout..');

这个问题背后的原因是什么?请帮忙?谢谢在同一台机器上运行的服务器(java)。

当我看到firebug时,我发现了这个问题,它只是显示加载图标。当我去掉套接字编程部分时,它可以正常工作。

php套接字连接默认情况下以阻塞模式打开,您需要使用socket_set_nonblock进行设置。例如:;

$this->soc = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
socket_set_nonblock($this->soc);

$socket = socket_create_listen(1223);
socket_set_nonblock($socket);
socket_accept($socket);