Background PHP worker


Background PHP worker

我有一个脚本,需要一段时间来处理,它必须从DB和传输数据到其他服务器的东西。

目前,我让它在表单提交后立即执行此操作,并且需要传输数据所需的时间来表示已发送。

我想知道是如何使它,所以它不做在客户面前的过程?

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

几个选项:

  1. 执行PHP脚本,从你的网页DB工作,但不等待输出的执行。在这一点上要非常小心,不要盲目地接受用户的任何输入参数而不进行消毒。我只提到这是一个选择,我自己永远不会这么做。

  2. 让你的DB更新脚本一直在后台运行,轮询发生的事情触发它的更新。例如,它可以检查/tmp/run.txt是否存在,如果存在,它将启动数据库更新。然后,您可以从您的网页创建run.txt并返回,而无需等待响应。

这里有一些你可以看看的东西:

传输了多少数据?通过传输,它更像是只复制粘贴数据,还是将数据从数据库插入到目标服务器,然后从源服务器删除数据?

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

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

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