У меня есть сервер со следующими характеристиками:
- 1 vCPU
- 1 ГБ ОЗУ
- 25 ГБ SSD
Сконфигурированные с 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()
, *Параметр 1029 * моего сервера установлен на 127M
(это значение по умолчанию при установке php и apache).
Теперь давайте предположим, что на мою страницу зашло 20 посетителей.В таком случае, как PHP будет выполнять процессы в фоновом режиме (поскольку подсчет от 0 до 1 миллиона часто занимает много времени)?
Будет ли он работать одновременно 20 раз (разделив 127M на 20, то естьчисло процессов) или некоторые процессы будут оставаться в списке ожидания, пока другие процессы не закончатся?Или PHP может выполнять только один процесс за один раз (в результате чего последняя задача от последнего пользователя довольно долго ждала, чтобы получить счет от 0 до 1 миллиона?)