我的服务器具有以下规格:
使用Linux Ubuntu 18.04
,apache 2
和php 7.2
配置。
让我们假设对于每个进入我页面的访问者,我都是在后台模式下运行一个命令,该命令的计数范围是0到100,000-1百万:
index.php
exec("php ./countToOneMilion.php > /dev/null &");//This code runs a php file in background mode (if the user closes a browser window, a count still continues)
countToOneMilion.php
$number = mt_rand(100000, 1000000);//Generate a random number
for ($i = 0; $i <= $number; $i++) {
echo $i;
}
根据phpinfo()
,我服务器的memory_limity
参数设置为127M
(这是安装php和apache时的默认值)。
现在,假设有20位访问者输入了我的页面。在那种情况下,PHP将如何在后台模式下执行进程(因为从0到100万计数通常是一项耗时的任务)?
它将同时运行20次(将127M除以20,即进程数量),还是将某些进程保留在等待列表中,直到其他进程结束?还是PHP一次只能执行一个进程(导致最后一个用户的最后一个任务要等待相当长的时间才能使计数从0到100万?)