我对PHP套接字是完全陌生的,此刻我将它们用于一个简单的目的:我想在 Cron Job 和网络套接字之间传递信息,自从我主机阻止我使用putenv
,这是我找到的最佳解决方案。
阅读official documentation,这就是我试图做的事情
$host = "localhost"; //or ssl://mydomain.com
$socket = fsockopen($host, 80, $no, $err,0);
if(!$err)
{
var_dump(fputs($socket, "random text"));
var_dump(filesize($socket));
var_dump(fgets($socket, filesize($socket)));
fclose($socket);
}
这是我得到的输出:
int(3)
NULL
bool(false)
因此,看来fput
成功了,但是由于某种原因,它实际上并没有写任何东西(与fwrite
和fread
相同。
更新:
对于对此感兴趣的任何人,我发现another solution使用了a completely different approach。
现在我只需要测试一下;如果由于某种原因它不起作用,我将继续执行Peakle的解决方案
答案 0 :(得分:1)
您的脚本有一些错误,例如:fsockopen中的超时为零,为resource
提供了filesize
,我修复了一些错误,并且如果您在localhost
域上的服务器可以正常工作将输出正确的响应:
<?php
$host = 'localhost';
$socket = fsockopen($host, 80, $no, $err, 30);
if (!$err) {
var_dump(fputs($socket, "random text"));
while (!feof($socket)) {
echo fgets($socket, 4096);
}
fclose($socket);
}
:)