确保接收和处理数据

时间:2011-04-01 11:54:32

标签: php http

我不太了解PHP,我想知道如何在PHP中实现以下算法:

我通过HTTP GET将字符串发送到PHP脚本。当脚本接收数据时,我处理它并将结果写入txt文件。该文件已存在。我只更新了一些行。我的问题是:如果服务器在我的数据处理过程中出现故障会怎样?如果服务器/脚本出现故障,如何最大限度地减少损坏?

数据处理可能需要一秒钟。所以我认为服务器在它期间崩溃是一个很高的风险。因此,我想把它分成两部分:

  1. 一个脚本(让我们称之为RECEIVER)从HTTP GET接收数据并将其存储到一个文件(称为Jobs.txt)。它应该完成得非常快,因为它只需要写20-50个字符。
  2. 第二个脚本(我们称之为PROCESSOR),每隔2-3秒检查一次该文件,看看是否添加了新条目。如果找到新条目,它会处理数据,保存数据并最终从作业文件中删除条目。如果服务器发生故障,在恢复时,也许我可以启动我的处理器并从中断处开始工作。
  3. 听起来如何?

    问题:如果两个用户同时向RECEIVER发送GET命令会发生什么?谁将写入文件将是一个冲突。此外,PROCESSOR可能会与该文件发生冲突,因为它也想写入该文件。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

将一些数据发送到PHP只使用URL

http://www.mydomain.com/myscript.php?getparam1=something&getparam2=something_else

从PHP脚本(在本例中为myscript.php)中获取它

$first_parameter = $_GET['getparam1'];
$second_parameter = $_GET['getparam2'];
// or use $_REQUEST instead of $_GET

$get_array = $_GET;
print_r($get_array);

$get_array = explode('; ', $_SERVER['QUERY_STRING']);

将文件写入文本文件使用:

error: This is XXI century!

考虑使用数据库而不是文本文件。

答案 1 :(得分:0)

正如Michael J.V.建议的那样,使用数据库而不是写入文件将解决一些问题:“你不会得到半写数据,最终会在数据集中出现问题”。编写脚本时应使用ACID标准:“如您所见,您需要的内容符合ACID标准”。