顯示具有 電腦資訊::編程::PHP 標籤的文章。 顯示所有文章
顯示具有 電腦資訊::編程::PHP 標籤的文章。 顯示所有文章

2014年5月3日

PHP 在 Ubuntu 的過量 fuser 造成 cannot fork: Cannot allocate memory

最近使用 Ubuntu 11.10的時候常常在 bash 出現
cannot fork: Cannot allocate memory

看ps又發現兩萬多個 fuser 佔領了主機
查了一下發現有許多人有相同的問題,而且似乎只會在這個Ubuntu版本才會發生

這個問題的原因是php清理無用session的時候發生了些什麼,結果fuser就停在那邊佔著解法是將清理的指令改掉

/etc/cron.d/php5改成
09,39 * * * *     root   [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) -delete

很棒的,最近都沒再出現 cannot fork 了

2011年4月21日

讀取檔案的最後幾行

$n = 20 //要讀的行數 $fileName = "name"; //要讀的檔案 $fp = fopen( $fileName, 'r' ); // 開啟檔案 fseek($fp,0,SEEK_END); $c = ftell($fp); $countline = 0; while ($c > 0 && $countline < $n ) { //從最後往前找第$n個\n   if ( fgetc( $fp ) == chr(10) ) $countline += 1;   $c -= 1;   fseek($fp,$c) ; } $data_array=explode(chr(10),fread($fp, filesize($fileName))); fclose($fp); $data_array 為讀取結果