2012-01-17 141 views
2

我有两个类似的问题如何PHP脚本执行

  1. 如何PHP脚本执行。例如,我有一个文件被某些参数调用。比方说,脚本首先开始处理请求,然后连接到数据库,在数据库中将值插入表中,然后在文本文件中显示或记录报告。假设PHP文件正在将数据插入到数据库中,并提出另一个请求。它会处理第二个请求吗?

  2. 谈到回合PayPal API和ESP IPN Listner,贝宝建议保持最小的监听器。因此,可以说我的听众刚刚收到约20个参数的付款通知请求。现在,我将把这些数据保存到数据库中,但同时希望快速获得空闲空间,以便我可以捕获其他请求。我的逻辑应该是什么?使用CURL或类似的东西把请求发送到数据插入到表中的另一个页面?这将使我的主听众减少负载和快速。这是正确的方法吗?或者我应该在主监听器中进行数据插入。

注意:我检查了How exactly is a PHP script executed?并且他们的答案在PHP内部有一个小时的讲座。不是一个明确的答案。

+0

问题1:每个执行PHP的http请求都作为一个单独的完全独立的线程运行,所以当第二个请求被收到时,你的第一个脚本不会停止执行......他们将运行完成。 – 2012-01-17 19:31:56

+0

所以第一个请求在中间,第二个到达。他们两人将分开完成?这不是因为剧本在第一个剧本中忙碌,它会错过第二个剧本吗? – 2012-01-17 19:38:35

+2

除非您锁定两个进程之间共享__deliberately__的资源(如会话文件),否则它们都将完全独立运行。 – 2012-01-17 19:39:49

回答

1

php脚本如何执行。例如,我有一个文件被某些参数调用。比方说,脚本首先开始处理请求,然后连接到数据库,在数据库中将值插入表中,然后在文本文件中显示或记录报告。假设PHP文件正在将数据插入到数据库中,并提出另一个请求。它会处理第二个请求吗?

将使用PHP的单独实例。

谈到回合PayPal API和ESP IPN Listner,贝宝建议保持最小的监听器。因此,可以说我的听众刚刚收到约20个参数的付款通知请求。现在,我将把这些数据保存到数据库中,但同时希望快速获得空闲空间,以便我可以捕获其他请求。我的逻辑应该是什么?使用CURL或类似的东西把请求发送到数据插入到表中的另一个页面?这将使我的主听众减少负载和快速。这是正确的方法吗?或者我应该在主监听器中进行数据插入。

不,cURL在阻塞,这样会让事情变得更糟。只需在正在访问的主PHP文件中执行此操作 - 如果有20个人同时点击它,您的Web服务器应该可以毫不费力地将它们分开。

3

不管被调用的次数多少,PHP脚本都会像它应该那样工作。如果php正在执行并且被再次请求,它将创建一个新的“实例”,这个php与另一个已经运行的副本一起运行,所以你不应该收到任何中断。

IPN监听器就是这种类型事务的一个例子。 PayPal的每一个url请求都将由php脚本的一个独立副本来处理,并且完全不会中断。