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

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

 更新時(shí)間:2011年04月12日 21:24:32   作者:  
PHP Notice: session_start(): ps_files_cleanup_dir
如果在ubuntu/Debian下, 采用apt安裝的PHP, 那么在使用Session的時(shí)候, 就可能會(huì)有小概率遇到這個(gè)提示.
復(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

這是因?yàn)? 在PHP中, 如果使用file_handler作為Session的save handler, 那么就有概率在每次session_start的時(shí)候運(yùn)行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);
}
//有省略

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

drwx-wx-wt root roo

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

//對(duì)于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進(jìn)程來完成的, 默認(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是否運(yùn)行的時(shí)候, 有倆個(gè)關(guān)鍵變量: PS(gc_divisor)和PS(gc_probability), 這倆個(gè)變量分別對(duì)應(yīng)著session的運(yùn)行時(shí)配置項(xiàng)的倆個(gè)同名配置項(xiàng):
session.gc_probability和session.gc_divisor, 他們分別默認(rèn)為1和100.
而php_combined_lcg是一個(gè)隨機(jī)數(shù)發(fā)生器, 生成0到1范圍的隨機(jī)數(shù), 所以上面的判別相當(dāng)于:
復(fù)制代碼 代碼如下:

rand < probability / gc_diviso

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

相關(guān)文章

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

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

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

    詳解php中流行的rpc框架

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

    PHP判斷一個(gè)字符串是否是回文字符串的方法

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

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

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

    smarty的保留變量問題

    {$smarty}保留變量可以被用于訪問一些特殊的模板變量,以下是全部頁(yè)面請(qǐng)求變量。
    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ā)原理解析

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

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

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

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

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

最新評(píng)論

晋城| 景洪市| 怀仁县| 大方县| 玉树县| 高安市| 杭锦后旗| 绍兴县| 康保县| 恩平市| 佳木斯市| 辰溪县| 汝州市| 富川| 石泉县| 建昌县| 临泉县| 社旗县| 当雄县| 泰顺县| 水城县| 墨玉县| 酉阳| 正定县| 商洛市| 浮梁县| 临朐县| 婺源县| 九龙县| 桃园市| 湖南省| 石城县| 奉化市| 彝良县| 深水埗区| 文安县| 灵山县| 永仁县| 佛学| 屏南县| 苗栗市|