4

背景

用户计算机上的桌面应用程序从调制解调器获取电话号码,并在接到电话后将其发送到 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 似乎很有希望,但我还没有进入它们。

4

1 回答 1

-2

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

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

于 2013-07-12T08:57:33.250 回答