Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP实时套接字_Php_Sockets - Fatal编程技术网

PHP实时套接字

PHP实时套接字,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

背景

用户计算机上的桌面应用程序从调制解调器获取电话号码,并在接到电话后将其发送到PHP脚本。目前,我能够通过PHP在指定端口上接收数据/数据包。然后,我有一个连接到411数据库并返回指定电话号码地址的刮板

问题

在通过套接字检索PHP中的电话号码后,如何使用新的电话号码自动更新411解析器页面

代码

socket\u listener.php

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
  • socket_listener.php在端口上全天候监听传入的数据包,并将收到的新电话号码附加到文本文件中
  • 411_scraper.php每5秒检查一次文本文件的更新。如果文件版本发生更改,则会读取最后一个电话号码
  • 运行代码查询411.com并使用电话号码检索数据
  • 所需解决方案

  • socket\u listener.php在端口上侦听包含电话号码的传入数据包
  • 使用从411检索到的新数据自动更新页面
  • 我一直在看的东西

    (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做什么?您的描述是它读取文本文件,但运行它的是什么?它与这些数据有什么关系?请在你的描述中更加完整。。。现在看来,你的问题让我很困惑。