2015-04-29 59 views
0

所以,我正在開發一款可以通過wi-fi控制的遊戲,我計劃通過PhP網絡服務器修改文件,隨後這個文件被一個Python程序在一個檢測更新的恆定循環中讀取。因此,在給定時刻都Python程序和Web服務器將打開相同的文件,所以還有我的問題...從兩個不同的程序訪問相同的文件是正確的?

這基本上,我將使用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($archivo, 'up'); 
     break; 
    case 'down': 
     fwrite($archivo, 'down'); 
     break; 
    case 'left': 
     fwrite($archivo, 'left'); 
     break; 
    case 'right': 
     fwrite($archivo, 'right'); 
     break; 
    } 
fclose($file); 

謝謝!

回答

0


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

這種問題被稱爲「互斥」意味着一些資源(例如:一個文件)只能訪問一個程序(或進程)。
因此,您可以使用已知的相互排斥解決方案,如「Semaphore」或「Lock」。見下面的鏈接瞭解更多信息:

PHP mutual exclusion (mutex) PHP Mutual Exclusion on a File/MySQL reading and executing statements from a file using perl Mutual exclusion thread locking, with dropping of queued functions upon mutex/lock release, in Python? http://wiki.bash-hackers.org/howto/mutex

0

沒關係,從兩個不同的程序訪問該文件,只要你不嘗試從兩個不同的程序進行修改。 從我看到的代碼中,您只能從Python中讀取,而不是寫入 - 您的寫作只能在PHP中完成。 因此,你不應該有任何衝突。 但是,您仍然應該確保使用文件鎖定機制爲PHP提供文件寫入鎖定,以便其他程序不會導致衝突。

相關問題