背景PHP工作者

时间:2011-11-20 21:38:27

标签: php mysqli backgroundworker

我有一个需要一段时间才能处理的脚本,它必须从数据库获取内容并将数据传输到其他服务器。

目前我已经在提交表单后立即执行此操作,并且需要花费时间来传输数据以表明其已发送。

我想知道无论如何要做到这一点它不会在客户面前做这个过程?

我不想要一个cron,因为它需要同时发送,但只是不加载客户端。

2 个答案:

答案 0 :(得分:1)

有两种选择:

  1. Exec从您的网页上运行数据库的PHP脚本,但不要等待exec的输出。 非常小心这一点,不要盲目地接受用户的任何输入参数而不清理它们。我只提到这个选项,我自己永远不会这样做。

  2. 让您的数据库更新脚本始终在后台运行,轮询发生触发其更新的事情。比如说,它可能会检查是否存在/tmp/run.txt,如果存在则会启动数据库更新。然后,您可以从网页创建run.txt并返回,而无需等待回复。

  3. 将您的数据库更新脚本创建为守护程序。

答案 1 :(得分:0)

以下是您可以查看的一些内容:

您传输了多少数据,通过传输更像是仅复制和粘贴数据,还是将数据从数据库插入目标服务器,然后从源中删除数据? / p>

您可以尝试分析您的SQL,看看是否有任何优化空间。

然后你也可以检查你的PHP代码,看看是否有任何东西,甚至是最轻微的,可能有助于更快地执行必要的任务。

源和目标数据库服务器位于何处(就网络和地理位置而言,如果您碰巧知道)以及源服务器和目标服务器能够通过网络/网络进行通信的速度有多快?