php脚本是如何执行的

Posted

技术标签:

【中文标题】php脚本是如何执行的【英文标题】:How does php script executes 【发布时间】:2012-02-12 14:31:25 【问题描述】:

我有两个类似的问题

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

    谈到 PayPal API 和 esp IPN Listner,PayPal 建议尽量减少 Listener。所以可以说我的听众刚刚收到一个带有大约 20 个参数的付款通知请求。现在我要将这些保存到数据库中,但同时又想快速释放,这样我也可以捕获其他请求。我的逻辑应该是什么?使用 CURL 或类似的东西将请求发布到另一个将数据插入到表中的页面?这将使我的主要听众负载更少且速度更快。这是正确的方法吗?或者我应该在主监听器中插入数据。

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

【问题讨论】:

问题 #1:执行 PHP 的每个 http 请求都作为一个单独的、完全独立的线程运行,因此当收到第二个请求时,您的第一个脚本不会停止执行...它们会 两者运行完成。 所以第一个请求在中间,第二个到达。他们俩会分开完成吗?不是因为第一个脚本忙,第二个就错过了吗? 除非您锁定了在两个进程之间故意共享的资源(例如会话文件),否则它们都将完全独立运行。 【参考方案1】:

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

IPN 侦听器是此类事务的一个示例。来自 paypal 的每个 url 请求都将由一个单独的 php 脚本副本处理并完全不间断地处理。

【讨论】:

【参考方案2】:

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

将使用一个单独的 PHP 实例。

谈到 PayPal API 和 esp IPN Listner,PayPal 建议尽量减少 Listener。所以可以说我的听众刚刚收到一个带有大约 20 个参数的付款通知请求。现在我要将这些保存到数据库中,但同时又想快速释放,这样我也可以捕获其他请求。我的逻辑应该是什么?使用 CURL 或类似的东西将请求发布到另一个将数据插入到表中的页面?这将使我的主要听众负载更少且速度更快。这是正确的方法吗?或者我应该在主监听器中插入数据。

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

【讨论】:

以上是关于php脚本是如何执行的的主要内容,如果未能解决你的问题,请参考以下文章

如何用php作Linux自动执行脚本

php如何执行shell脚本

如何使用Laravel命令执行外部PHP脚本?

如何用php作Linux自动执行脚本?

如何在 ios 解析服务器端执行 php 脚本?

如何加快这个 PHP 脚本的执行速度