最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解PHP原理之Session Gc的一個小概率Notice

 更新時間:2011年04月12日 21:24:32   作者:  
PHP Notice: session_start(): ps_files_cleanup_dir
如果在ubuntu/Debian下, 采用apt安裝的PHP, 那么在使用Session的時候, 就可能會有小概率遇到這個提示.
復(fù)制代碼 代碼如下:

PHP Notice: session_start(): ps_files_cleanup_dir:
opendir(/var/lib/php5) failed: Permission denied (13)
in /home/laruence/www/htdocs/index.php on line 22

這是因為, 在PHP中, 如果使用file_handler作為Session的save handler, 那么就有概率在每次session_start的時候運行Session的Gc過程.
復(fù)制代碼 代碼如下:

//有省略
int nrdels = -1;
nrand = (int) ((float) PS(gc_divisor) * php_combined_lcg(TSRMLS_C));
if (nrand < PS(gc_probability)) {
PS(mod)->s_gc(&PS(mod_data), PS(gc_maxlifetime), &nrdels TSRMLS_CC);
}
//有省略

這個警告的原因是因為在apt的PHP中, session的默認(rèn)目錄/var/lib/php5的權(quán)限是733 with sticky bit, 也就是
復(fù)制代碼 代碼如下:

drwx-wx-wt root roo

而一般PHP的worker都運行在非root身份下, 所以是沒有權(quán)限來打開這個文件夾的(但是因為可以write, 所以不影響正常的Session文件讀取). 于是在s_gc中的如下代碼, 就會觸發(fā)開頭所說的Notice:
復(fù)制代碼 代碼如下:

//對于file handler來說, s_gc間接調(diào)用ps_files_cleanup_dir:
dir = opendir(dirname);
if (!dir) {
php_error_docref(NULL TSRMLS_CC, E_NOTICE,
"ps_files_cleanup_dir: opendir(%s) failed: %s (%d)",
dirname, strerror(errno), errno);
return (0);
}

當(dāng)然, 在ubuntu/Debian下, 還是有g(shù)c回收的, 只不過是外部的cron進程來完成的, 默認(rèn)的在/etc/cron.d/php5:,
復(fù)制代碼 代碼如下:

09,39 * * * * root [ -x /usr/lib/php5/maxlifetime ]
&& [ -d /var/lib/php5 ] && find /var/lib/php5/
-type f -cmin +$(/usr/lib/php5/maxlifetime) -print0
| xargs -n 200 -r -0 r

另外, 可以看到, 在判別s_gc是否運行的時候, 有倆個關(guān)鍵變量: PS(gc_divisor)和PS(gc_probability), 這倆個變量分別對應(yīng)著session的運行時配置項的倆個同名配置項:
session.gc_probability和session.gc_divisor, 他們分別默認(rèn)為1和100.
而php_combined_lcg是一個隨機數(shù)發(fā)生器, 生成0到1范圍的隨機數(shù), 所以上面的判別相當(dāng)于:
復(fù)制代碼 代碼如下:

rand < probability / gc_diviso

也就是說, 默認(rèn)情況下, 差不多是100次能調(diào)用一次gc過程. 所以也就是小概率的可以看到這個Notice.
要關(guān)閉這個Notice, 只需要設(shè)置:
session.gc_probability = 0, 讓s_gc完全沒有運行的可能即可.
當(dāng)然, 你也可以改變這個文件夾的權(quán)限…
最后, 感謝CFC4N提供這個問題.
作者: Laruence( )
本文地址: http://www.laruence.com/2011/03/29/1949.html

相關(guān)文章

  • PHP 用數(shù)組降低程序的時間復(fù)雜度

    PHP 用數(shù)組降低程序的時間復(fù)雜度

    時間復(fù)雜度是開發(fā)人員用來衡量應(yīng)用程序算法優(yōu)劣的主要因素。客觀地說,算法的優(yōu)劣除了和時間復(fù)雜度有關(guān),還與空間復(fù)雜度密切相關(guān)。
    2009-12-12
  • 詳解php中流行的rpc框架

    詳解php中流行的rpc框架

    如果用一句話概括RPC就是:遠程調(diào)用框架(Remote Procedure Call)。遠程調(diào)用意思就是:被調(diào)用方法的具體實現(xiàn)不在程序運行本地,而是在別的某個遠程地方。
    2021-05-05
  • PHP判斷一個字符串是否是回文字符串的方法

    PHP判斷一個字符串是否是回文字符串的方法

    這篇文章主要介紹了PHP判斷一個字符串是否是回文字符串的方法,實例分析了php操作字符串判斷回文的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • PHP中刪除變量時unset()和null的區(qū)別分析

    PHP中刪除變量時unset()和null的區(qū)別分析

    當(dāng)程序里不再使用某些大體積的變量時(如:數(shù)組或?qū)ο螅?,我們有必要刪除它們
    2011-01-01
  • smarty的保留變量問題

    smarty的保留變量問題

    {$smarty}保留變量可以被用于訪問一些特殊的模板變量,以下是全部頁面請求變量。
    2008-10-10
  • PHP遍歷數(shù)組的方法匯總

    PHP遍歷數(shù)組的方法匯總

    php下最靈活的東西都是數(shù)組,很多數(shù)據(jù)都是通過數(shù)組的方式顯示,這里整理下數(shù)組的遍歷方法,大家可以根據(jù)需要選用。
    2015-04-04
  • 理解php依賴注入和控制反轉(zhuǎn)

    理解php依賴注入和控制反轉(zhuǎn)

    這篇文章主要幫助大家理解php依賴注入和控制反轉(zhuǎn),感興趣的小伙伴們可以參考一下
    2016-05-05
  • PHP多人模塊開發(fā)原理解析

    PHP多人模塊開發(fā)原理解析

    本篇文章給大家詳細解釋了PHP多人開發(fā)的原理以及需要注意的地方,一起參考學(xué)習(xí)下吧。
    2017-12-12
  • php中將數(shù)組轉(zhuǎn)成字符串并保存到數(shù)據(jù)庫中的函數(shù)代碼

    php中將數(shù)組轉(zhuǎn)成字符串并保存到數(shù)據(jù)庫中的函數(shù)代碼

    為了方便可以把php的數(shù)組轉(zhuǎn)換為 字符串保存到數(shù)據(jù)庫中。當(dāng)需要用時就可以取出字符串再轉(zhuǎn)成數(shù)組即可。下為為php數(shù)組與字符串相互轉(zhuǎn)換的自定義函數(shù)
    2013-09-09
  • PHP錯誤提示的關(guān)閉方法詳解

    PHP錯誤提示的關(guān)閉方法詳解

    關(guān)閉PHP錯誤腳本提示是程序上線了必須做的一件事情,就是不管程序怎么報錯我們都不能讓錯誤日志在服務(wù)器上給大家看到,下面我來總結(jié)兩種關(guān)閉PHP錯誤腳本提示的具體方法
    2013-06-06

最新評論

武清区| 乌兰浩特市| 绥宁县| 濮阳县| 依兰县| 日喀则市| 汝阳县| 新绛县| 聂荣县| 邵武市| 蒙自县| 馆陶县| 义乌市| 三门峡市| 曲水县| 阜宁县| 灌南县| 将乐县| 上犹县| 宿州市| 龙泉市| 讷河市| 射阳县| 克拉玛依市| 东明县| 荥阳市| 南和县| 济阳县| 禹州市| 福建省| 大厂| 堆龙德庆县| 南安市| 云林县| 贵南县| 新兴县| 曲阳县| 攀枝花市| 乌拉特后旗| 南充市| 襄汾县|