首先,如果此问题已经提出,我很抱歉。我已经尝试到处搜索它,但一无所获。
我有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);
}