關於函數flock()的鎖定問題!!!

來源:互聯網
上載者:User
a.php

$file3=fopen('a.txt','r+');if(flock($file3,LOCK_EX+LOCK_NB)) {    fwrite($file3,$_GET['s']) ;    sleep(5);    flock($file3,LOCK_UN);} else{    echo "檔案鎖定,不可寫入內容!";}

b.php

$file2=fopen('a.txt','r+');fwrite($file2,$_GET['s']) ;echo fread($file2,filesize('a.txt'));fclose($file2);

先執行a.php時利用5秒間隔執行b.php
按理說由於a.php已經鎖定,所以b.php,
無法寫入,老師的視屏也是如此進行的
但是,我卻不能和老師的一樣運行,
結果依然是b.php寫入的內容,a.php,並沒有
鎖定成功。

在下發現一個問題:就是我不能像視頻裡的老師一樣利用間隔執行另一個指令碼;
實際情況是:執行a.php完全結束後,才會在執行b.php。(前提是先重新整理a.php,再重新整理b.php)

我不清楚為什麼會這樣,請大家指教!

回複內容:

a.php

$file3=fopen('a.txt','r+');if(flock($file3,LOCK_EX+LOCK_NB)) {    fwrite($file3,$_GET['s']) ;    sleep(5);    flock($file3,LOCK_UN);} else{    echo "檔案鎖定,不可寫入內容!";}

b.php

$file2=fopen('a.txt','r+');fwrite($file2,$_GET['s']) ;echo fread($file2,filesize('a.txt'));fclose($file2);

先執行a.php時利用5秒間隔執行b.php
按理說由於a.php已經鎖定,所以b.php,
無法寫入,老師的視屏也是如此進行的
但是,我卻不能和老師的一樣運行,
結果依然是b.php寫入的內容,a.php,並沒有
鎖定成功。

在下發現一個問題:就是我不能像視頻裡的老師一樣利用間隔執行另一個指令碼;
實際情況是:執行a.php完全結束後,才會在執行b.php。(前提是先重新整理a.php,再重新整理b.php)

我不清楚為什麼會這樣,請大家指教!

PHP supports a portable way of locking complete files in an advisory
way (which means all accessing programs have to use the same way of
locking or it will not work). By default, this function will block
until the requested lock is acquired; this may be controlled with the
LOCK_NB option documented below.

advisory lock - 你需要在 a.php 和 b.php 都調用flock()

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.