【问题标题】:PHP Sockets in Realtime实时 PHP 套接字
【发布时间】:2013-07-12 02:08:06
【问题描述】:

背景

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

问题

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

代码

socket_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);

phone_numbers.txt

(425) 555-1212
(123) 456-7890

当前解决方案

我目前的解决方案非常古怪。

modem -> desktop application -> socket_listener.php -> data.txt -> 411_scraper.php
  1. socket_listener.php 24/7 在端口上监听传入的数据包,并将接收到的新电话号码附加到文本文件中
  2. 411_scraper.php 每 5 秒检查一次文本文件的更新。如果文件版本发生变化,则读取最后一个电话号码
  3. 运行代码查询411.com并使用电话号码检索数据

所需的解决方案

  1. socket_listener.php 在端口上侦听包含电话号码的传入数据包
  2. 使用从 411 检索到的新数据自动更新页面

我一直在看的东西

我看过 node.js、Ratchet (www.socketme.com) 和 Pusher (http://pusher.com/),但它们都超出了我的理解水平。 Pusher 和 Ratchet 看起来很有希望,但我还没有进入它们。

【问题讨论】:

  • 也许你可以为你的socket_listener.php创建一个回调?
  • 具体是什么问题?为什么不直接在 socket_listener.php 中更新该数据库?
  • @Brad - 问题是我如何做到这一点,一旦 PHP 收到数据包(电话号码),然后页面自动查询 411 数据库并输出数据而无需经过中间人就像一个文本文件。我一直在做更多的研究,并遇到了 Ajax 长轮询方法。再加上您建议改用数据库
  • [继续] 再加上您使用数据库的建议,我可以用新的电话号码和时间戳更新表,然后每隔几秒轮询一次表。我将为大约 10 家企业提供服务。你相信它会对服务器/cpu造成压力吗?我猜它甚至不应该划伤服务器,但我会进行压力测试以确保。
  • 没错。我没有看到问题。你说问题是你不希望 PHP 写入文本文件......我问你为什么首先走这条路?简单地不要写入文本文件并直接进入您的数据库。还是你说你没有数据库?如果是这样,411_scraper.php 是做什么的?您的描述是它读取一个文本文件,但是运行它的是什么?它对这些数据有什么作用?请在您的描述中更完整...就目前而言,您的问题让我很困惑。

标签: php sockets


【解决方案1】:

我会使用 ajax 或类似的东西。 PHP 不是实时的东西。当您导航到使用 PHP 的网站时,代码会在页面呈现之前执行。它在服务器计算机上处​​理代码并将结果作为字符串返回给您,您可以将其发送给请求的客户端。

您将在某处持久保存数据。一旦 php 脚本完成执行,该执行的数据就消失了。除非你使用会话。

【讨论】:

    猜你喜欢
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 2012-04-05
    相关资源
    最近更新 更多