Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何为web应用程序构建高效的后台批处理过程?_Php_Node.js_Web Applications_Integration_Background Process - Fatal编程技术网

Php 如何为web应用程序构建高效的后台批处理过程?

Php 如何为web应用程序构建高效的后台批处理过程?,php,node.js,web-applications,integration,background-process,Php,Node.js,Web Applications,Integration,Background Process,我有一个使用Postgres数据库用PHP编写的web应用程序 开发的下一个阶段是构建后台批处理过程,需要为应用程序的每个用户每天执行一次(或根据要求临时执行)。该过程将查询、等待响应并处理来自第三方服务的响应,以将信息提供给web应用程序中的用户帐户 有什么好方法可以做到这一点吗 如何在每天凌晨3点为每个用户触发批次 考虑到响应可能会延迟,这是一个好的场景,可以使用类似的方式吗 最好让批处理过程的输出直接更新web应用程序的数据库吗 有适当的数据吗? 或者,是否有其他方法来处理输出 更新:

我有一个使用Postgres数据库用PHP编写的web应用程序

开发的下一个阶段是构建后台批处理过程,需要为应用程序的每个用户每天执行一次(或根据要求临时执行)。该过程将查询、等待响应并处理来自第三方服务的响应,以将信息提供给web应用程序中的用户帐户

有什么好方法可以做到这一点吗

  • 如何在每天凌晨3点为每个用户触发批次
  • 考虑到响应可能会延迟,这是一个好的场景,可以使用类似的方式吗
  • 最好让批处理过程的输出直接更新web应用程序的数据库吗 有适当的数据吗? 或者,是否有其他方法来处理输出

更新:该流程不必在凌晨3点运行。关键是可能需要为每个用户运行几个批处理过程。批次的执行可以在一天中进行。。我希望这是一个独立于应用程序的“后台”过程

您可以编写一个PHP脚本,在需要处理的任何用户中运行,并设置一个cron作业,在凌晨3点运行脚本。作为cron作业运行意味着您不必太担心第三方调用的速度有多慢。显然,您需要在数据库中存储任何必要的数据

或者,如果该进程是由用户在站点上执行某项操作触发的,则可以使用
exec()
立即触发PHP脚本以仅处理该用户,而无需用户等待。这样做的风险在于,您无法控制流程触发的速度

第三种选择是直接执行请求并让用户等待。但听起来这不是你的选择


这真的取决于你打电话给哪一个第三方以及为什么。第三方需要多长时间才能做出响应,他们的可靠性如何,他们可能会强制执行何种速率限制,等等。

就在特定时间运行脚本而言,您可以始终使用cron。但是否所有用户的数据都在同一时间(即凌晨3点)提取?我的意思是,如果有1000个用户,那么所有1000个用户的数据将在凌晨3点下载。@suraj如果可能的话,最好在一天中以相同的负载均匀分布