PHP实时套接字
背景 用户计算机上的桌面应用程序从调制解调器获取电话号码,并在接到电话后将其发送到PHP脚本。目前,我能够通过PHP在指定端口上接收数据/数据包。然后,我有一个连接到411数据库并返回指定电话号码地址的刮板 问题 在通过套接字检索PHP中的电话号码后,如何使用新的电话号码自动更新411解析器页面 代码 socket\u listener.phpPHP实时套接字,php,sockets,Php,Sockets,背景 用户计算机上的桌面应用程序从调制解调器获取电话号码,并在接到电话后将其发送到PHP脚本。目前,我能够通过PHP在指定端口上接收数据/数据包。然后,我有一个连接到411数据库并返回指定电话号码地址的刮板 问题 在通过套接字检索PHP中的电话号码后,如何使用新的电话号码自动更新411解析器页面 代码 socket\u listener.php set_time_limit(0); $address = "127.0.0.1"; $port = 10629; // create soc
set_time_limit(0);
$address = "127.0.0.1";
$port = 10629;
// create socket and bind with listener event
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, $address, $port);
socket_listen($socket);
do {
$accept = socket_accept($socket);
$read = socket_read($accept, 1024) or die("Could not read input\n");
// parse phone number
$phone = substr($read, 19, 15);
$file = fopen("phone_numbers.txt", "a");
fwrite($file, $phone . "\r\n");
fclose($file);
} while (true);
电话号码.txt
(425) 555-1212
(123) 456-7890
当前解决方案
我目前的解决方案相当古怪
modem -> desktop application -> socket_listener.php -> data.txt -> 411_scraper.php
(425) 555-1212
(123) 456-7890
我看过node.js、Ratchet(www.socketme.com)和Pusher(),但它们都超出了我的理解水平。Pusher和Ratchet似乎很有希望,但我还没有开始使用它们。我会使用ajax或类似的东西。PHP不是一个实时的东西。当您导航到使用PHP的网站时,代码会在呈现页面之前执行。它在服务器计算机上处理代码,并将结果作为字符串返回给您,您可以将其发送给请求客户端
您将拥有持久地保存数据的方法。一旦php脚本完成执行,执行数据就消失了。除非您使用会话。也许您可以为socket\u listener.php创建回调?具体问题是什么?为什么不直接在你的
socket\u listener.php
?@Brad中更新这个数据库呢?问题是我如何做到,一旦php收到数据包(电话号码),页面就会自动查询411数据库并输出数据,而不必像文本文件一样经过中间人。我做了更多的研究,发现了Ajax长轮询方法。再加上你建议改用数据库[续]再加上你建议改用数据库,我可以用新的电话号码和时间戳更新一个表,然后每隔几秒钟轮询一次表。我将为大约10家企业提供服务。您认为这会给服务器/cpu带来压力吗?我猜它甚至不应该划伤服务器,但我会通过压力测试来确保。准确地说。我看不出有什么问题。你是说问题是你不想让PHP写一个文本文件。。。我是问你为什么要走那条路?只需不写入文本文件,直接进入数据库即可。还是说你没有数据库?如果是这样,411_scraper.php做什么?您的描述是它读取文本文件,但运行它的是什么?它与这些数据有什么关系?请在你的描述中更加完整。。。现在看来,你的问题让我很困惑。