簡體   English   中英

從兩個不同的程序訪問同一個文件是否正確?

[英]Is it correct to access same file from two different programs?

所以就這樣吧,我正在開發一個可以通過 wi-fi 控制的游戲。 我計划通過 PhP 網絡服務器修改文件,此文件稍后由 Python 程序在檢測更新的恆定循環中讀取。 所以在給定的時刻,python 程序和網絡服務器都會打開同一個文件,所以我的問題是......

這基本上是我將使用的 Python 代碼:

file = open('file.ext', 'r')
answer = file.readline()
file.close()

和 PhP 代碼:

$dir = $_POST['dir'];
$file = fopen('file.ext', 'w+');

switch ($dir) {
     case 'up':
         fwrite($file, 'up');
         break;
    case 'down':
         fwrite($file, 'down');
         break;
    case 'left':
         fwrite($file, 'left');
         break;
    case 'right':
         fwrite($file, 'right');
         break;
  }
fclose($file);


避免在兩個程序中同時訪問文件。 因為可能會出現一些問題。 試想一下,我們在閱讀和寫作的同時。

這種問題被稱為“互斥”,意味着某些資源(例如:文件)必須只能被一個程序(或進程)訪問。
因此,您可以使用已知的互斥解決方案,例如“信號量”或“鎖定”。 有關更多信息,請參閱以下鏈接:

PHP 互斥(互斥) 文件/MySQL 上的 PHP 互斥使用 perl 互斥線程鎖定從文件讀取和執行語句, 在互斥/鎖定釋放時刪除排隊的函數,在 Python 中? http://wiki.bash-hackers.org/howto/mutex

可以從兩個不同的程序訪問文件,只要您不嘗試從兩個不同的程序修改它。 從我對你的代碼的看法來看,你只是在從 Python 中讀取,而不是在寫作——你的寫作只是在 PHP 中。 因此,您不應該有任何沖突。 但是,您仍然應該確保使用文件鎖定機制來為 PHP 提供對文件的寫鎖定,以便其他程序不會引起沖突。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM