Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: php-cli и выделение памяти
Форумы портала PHP.SU » » Операционная система и системные вызовы » php-cli и выделение памяти

Страниц (1): [1]
 

1. Uchkuma - 20 Июня, 2015 - 17:44:07 - перейти к сообщению
Centos 6, PHP Version => 5.4.42.

В php.ini для php-cli установлено memory_limit = 4096M
В самом скрипте - ini_set('memory_limit', '4096M');
php_info() выводит memory_limit => 4096M => 4096M
При всем при этом при выполнении скрипта вываливается:
CODE (htmlphp):
скопировать код в буфер обмена
  1. PHP Fatal error: Allowed memory size of 262144 bytes exhausted (tried to allocate 1920 bytes) in...

Вопрос: почему процесс оказался ограничен 256 килобайтами?

Запускаю так
CODE (htmlphp):
скопировать код в буфер обмена
  1. $ /usr/bin/php -f /home/123/www/index.php -c /home/123/php.ini >/home/123/log/pam-out.log 2>/home/123/log/pam-error.log


Проблема появилась предположительно после обновления системы, в т.ч. php.
2. MiksIr - 20 Июня, 2015 - 17:50:27 - перейти к сообщению
Посмотрите php -i | grep memory_limit для начала - мало ли, не тот конфиг
ну и ulimit -a потом - может системные ограничения
3. Uchkuma - 20 Июня, 2015 - 17:56:09 - перейти к сообщению
php -i выводит то же самое, что и php_info(). В обоих случаях:
CODE (htmlphp):
скопировать код в буфер обмена
  1. Loaded Configuration File => /home/123/php-pam.ini
  2. memory_limit => 4096M => 4096M

Конфиг тот.

CODE (htmlphp):
скопировать код в буфер обмена
  1. $ ulimit -a
  2. core file size          (blocks, -c) 0
  3. data seg size           (kbytes, -d) unlimited
  4. scheduling priority             (-e) 0
  5. file size               (blocks, -f) unlimited
  6. pending signals                 (-i) 127686
  7. max locked memory       (kbytes, -l) 64
  8. max memory size         (kbytes, -m) unlimited
  9. open files                      (-n) 1024
  10. pipe size            (512 bytes, -p) 8
  11. POSIX message queues     (bytes, -q) 819200
  12. real-time priority              (-r) 0
  13. stack size              (kbytes, -s) 10240
  14. cpu time               (seconds, -t) unlimited
  15. max user processes              (-u) 1024
  16. virtual memory          (kbytes, -v) unlimited
  17. file locks                      (-x) unlimited

MiksIr пишет:
может системные ограничения

На серваке под этим же пользователем работает тяжелый портал на Битриксе, так что насчет системных ограничений сомнительно. Оперативки 16Гиг.
А данный косяк встречается именно при использовании php-cli.
4. MiksIr - 20 Июня, 2015 - 18:15:47 - перейти к сообщению
смотри phpinfo ну или хотя бы echo ini_get("memory_limit") перед местом, где он падает.
suhosin стоит? Проверь suhosin.memory_limit
5. Uchkuma - 20 Июня, 2015 - 18:19:12 - перейти к сообщению
Это уже все просмотрено. Везде значение 4096M.
Проблема пропала, когда установил значение 2048M. Хм... в чем может быть дело?
Оперативки на машине 16Гб.
6. MiksIr - 20 Июня, 2015 - 21:25:44 - перейти к сообщению
Случаем не 32-битный?
7. Uchkuma - 22 Июня, 2015 - 11:56:28 - перейти к сообщению
Linux portal 2.6.32-504.23.4.el6.i686 #1 SMP Tue Jun 9 18:09:42 UTC 2015 i686 i686 i386 GNU/Linux
8. Мелкий - 22 Июня, 2015 - 12:26:04 - перейти к сообщению
На 16 гигах памяти 32-битное ядро?! Серьёзно?!
Ну при попытке поставить memory_limit в 0, на 256кб отстрел и производится, всё закономерно. (вроде игнорятся любые значения меньше 256кб)
И на 32-битной системе вы в принципе одной задаче больше 4гб памяти отдать не можете. Хоть pae, хоть не pae.

 

Powered by ExBB FM 1.0 RC1