С PHP я сталкиваюсь с ошибками failed to open stream: Too many open files, через wp-cli, а также через fpm-php.

Я адаптировал такие вещи, как fpm rlimit и ulimit в командной строке. Теперь было бы очень хорошо, если бы я мог видеть максимальное количество файлов, которые может открыть скрипт без запуска (медленного) кода.

Как узнать количество файлов, которые я могу открыть, из самого PHP?

Я знаю, что могу просматривать файлы конфигурации, но я хочу видеть фактическое число, имеющееся в текущем скрипте, чтобы я мог адаптировать файлы конфигурации и посмотреть, какие изменения действительно имеют смысл.

К сожалению, phpinfo() не показывает этот номер.

Если есть команда оболочки, которая показывает это число, конечно, этого будет достаточно, так как я мог бы просто exec это сделать.

1
kqw 21 Ноя 2019 в 13:21
В /etc/security/limits.conf: не уверен
 – 
BhAvik Gajjar
21 Ноя 2019 в 13:24
На сервере debian вы также можете перейти в /etc/php/php7.xx/fpm/pool.d/www.conf, найти "rlimit_files" и перезапустить сервер
 – 
BhAvik Gajjar
21 Ноя 2019 в 13:28
1
Максимальное количество доступных файловых дескрипторов для PHP-скрипта, кажется, составляет около posix_getrlimit()['soft_openfiles'] (ну, для систем Linux или POSIX), хотя и за вычетом небольшого, хотя и разного количества файловых дескрипторов (зависит от среды, может быть, из-за файлов, открытых внутри PHP или родительскими процессами?). Количество используемых файловых дескрипторов, которое вы можете получить, используя результат count(get_resources('stream')) внутри скрипта.
 – 
Wieger
21 Ноя 2019 в 18:16
Чтобы исправить мой предыдущий комментарий: подчеркивание в soft_openfiles должно быть пробелом.
 – 
Wieger
21 Ноя 2019 в 18:26

1 ответ

В php, перед выполнением, попробуйте это

exec('ulimit -S -n 2048');
0
BhAvik Gajjar 21 Ноя 2019 в 13:25
Это полезно, но не показывает мне максимальное количество открытых файлов. Чтобы не добавлять лишний exec в каждый сценарий, я должен выяснить, какой файл конфигурации изменить, чтобы получить желаемый эффект.
 – 
kqw
21 Ноя 2019 в 13:43