php socket_write如果之后发送了标题(' Location ...')则不发送

时间:2017-10-10 07:34:14

标签: php perl sockets redirect header

首先,如果此问题已经提出,我很抱歉。我已经尝试到处搜索它,但一无所获。

我有tcp服务器运行(perl),它很简单,它只接受连接,读取套接字并关闭套接字。

客户端是PHP。无论何时加载页面,它都会创建套接字,连接到服务器,发送数据("唤醒\ r \ n"),然后关闭它。

只有在我不重定向页面时,代码才有效。如果我发送重定向头,服务器正在接受连接,但没有接收任何数据。

有人遇到过这个问题吗? 有没有解决方法? 有人可能会在我的代码中指出错误吗?

谢谢

include_once 'order.php';

    $next = $_GET['next'];
    $paramjson  = addslashes($_GET['paramjson']);   
    $editmode  = $_GET['editmode']=="1";
    if($editmode){
        editOrderDetail($paramjson);
    } else {
        newOrderDetail($paramjson);
    }

    if(isset ($_GET['render']))
    {
        //echo "wake up server\n";
        $wake = wakeupRenderServer();
    } 

    //if i comment 2 lines below, the server gets the data
    if($next == "newkeyc") header("Location: ../editkeyc.php");
    else header("Location: ../index.php");
    exit;

    function wakeupRenderServer()
    {
        $service_port = 7778;
        $address = "127.0.0.1";
        // Create a TCP/IP socket. 
        $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

        if ($socket === false) {
            socket_strerror(socket_last_error()) . "\n";            
        } else {

        }

        $result = socket_connect($socket, $address, $service_port);
        if ($result === false) {
            echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";

        } else {

        }

        $cmd = "wakeup" . "\r\n" . chr(0);

        $out = '';
        socket_write($socket, $cmd, strlen($cmd));      


        socket_close($socket);          

    }

0 个答案:

没有答案