创建一个简单的套接字

时间:2020-05-11 19:31:55

标签: php sockets cron port fwrite

我对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成功了,但是由于某种原因,它实际上并没有写任何东西(与fwritefread相同。


更新:

对于对此感兴趣的任何人,我发现another solution使用了a completely different approach

现在我只需要测试一下;如果由于某种原因它不起作用,我将继续执行Peakle的解决方案

1 个答案:

答案 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);
}

:)