php-fpm log location
php-fpm settings
; php80 php_flag[display_errors] = off php_admin_flag[log_errors] = on php_admin_value[error_log] = /var/opt/remi/php80/log/php-fpm/www-error.log
ls -ld /var/opt/remi/php80/log/php-fpm/www-error.log # Folder permission 係其他人看不了.
drwxrwx--- 2 apache root 23 Jul 7 16:49 /var/opt/remi/php80/log/php-fpm
會 log 到 error_log 的類型:
- Fatal error
- Parse error
* 可透過 "error_reporting(E_ALL & ~E_NOTICE);" 修改 log 什麼
Memory Limit
Show Current memory usage
# Returns the amount of memory allocated to PHP
memory_get_usage() # php 8.0
<?php echo memory_get_usage() . PHP_EOL; // 347864 $a = str_repeat("Hello", 1000000); echo memory_get_usage() . PHP_EOL; // 5349104 unset($a); echo memory_get_usage() . PHP_EOL; // 347864 ?>
(5349104 - 347864) / 1000000 ~ 5
Memory usage limit settings
mod_php
Runtime set memory limit in Code
ini_set('memory_limit', '256M');
* Runtime set memory limit 只在 mod_php 時才有效, FPM 情況無效
memory 在 php-fpm 時 Settings
php.ini
memory_limit = 256M
php-fpm.conf
php_admin_value[memory_limit] = 256M
Log
/var/opt/remi/php80/log/php-fpm/www-error.log
... PHP Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 268435464 bytes) in /home/vhosts/datahunter.org/public_html/tim.php on line 21
Execution time limit
php-fpm.conf
php_admin_value[max_execution_time] = 30
計時 script
$start_time = microtime(true); ... $end_time = microtime(true); $execution_time = ($end_time - $start_time); echo " Execution time: " . $execution_time . " us";
# us (1s=10^6)
microtime() 当前 Unix 时间戳以及微秒数
Log
... PHP Fatal error: Maximum execution time of 30 seconds exceeded in /home/vhosts/datahunter.org/public_html/tim.php on line 19
Test script
功能: 測試 memory_limit 及
<html><body><pre> <?php // Setting $nloop = 1000000; error_reporting(E_ALL & ~E_NOTICE); // get current limit echo "max_execution_time: " . ini_get('max_execution_time') . PHP_EOL; echo "memory_limit: " . ini_get('memory_limit') . PHP_EOL; echo "========" . PHP_EOL; // start timer $start_time = microtime(true); // code $big_array = array(); for ($i = 0; $i < $nloop; $i++) { for ($j = 0; $j < $nloop; $j++) { //hash('sha256', 'To run time consume function'); //$big_array[] = $i; } } // result $end_time = microtime(true); $execution_time = ($end_time - $start_time); echo "Execution time: " . $execution_time . " us" . PHP_EOL; echo "Usage: " . memory_get_usage() . PHP_EOL; ?> </pre></body></html>