【问题标题】:PHP script hangs up during socket programming在套接字编程期间 PHP 脚本挂起
【发布时间】:2015-03-04 18:18:46
【问题描述】:

当我在 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 sockets


    【解决方案1】:

    默认情况下,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);
    

    【讨论】:

    • 问题是另一端的服务器正在监听,但不是在 127.0.0.1 上,而是在 0.0.0.0 上
    猜你喜欢
    • 1970-01-01
    • 2018-12-18
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多