我有 PHP(5.5),在 NGINX 上使用 Laravel 框架和 PHP-FPM。
这是我做的。我有一个脚本myscript.php
<?php
while(true) {
@file_get_contents('http://myserver.com/api/data');
}
?>
API URL 指向我的 Laravel 应用程序中的一个控制器,该控制器大致执行以下操作:
public function getData() {
$page = file_get_contents('http://an-external-server-page');
// parse the page and insert some data into Postgres DB
...
}
现在,在我的 VPS 上,我通过以下方式运行脚本
php myscript &
过了一会儿,我输入
ps -ef | grep php
我看到了很多php-fpm: pool www
过程。
我的假设是,由于我只运行了一次脚本,所以 php-fpm 应该只有一个子进程,而不是那么多。但看起来我的假设是错误的。
我的问题是,是什么创建了这么多 php-fpm 请求?
我最初以为每次file_get_contents
调用 php-fpm 都会产生请求,但根据我的计算并不是这样。例如,我调用了file_get_contents
10 次,但这并不意味着php-fpm
创建了 10 个进程。
然后我想也许有些 php-fpm 请求已经创建,但没有被正确关闭。如果是这样,关闭它的正确方法是什么?