从两个不同的程序访问同一个文件是否正确?

2024-04-23 06:42:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一款可以通过wi-fi控制的游戏。我计划通过一个PhP Web服务器修改一个文件,这个文件稍后由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($file, 'up');
         break;
    case 'down':
         fwrite($file, 'down');
         break;
    case 'left':
         fwrite($file, 'left');
         break;
    case 'right':
         fwrite($file, 'right');
         break;
  }
fclose($file);

Tags: 文件代码程序服务器webdirleftext
2条回答


避免在两个程序中同时访问该文件。因为可能会发生一些问题。想想看,我们在读和写的同时。

这类问题称为“互斥”,意味着只有一个程序(或进程)才能访问某些资源(例如:文件)
因此您可以使用已知的互斥解决方案,如“信号量”或“锁”。有关更多信息,请参见以下链接:

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

可以从两个不同的程序访问该文件,只要您不尝试从两个不同的程序修改它。 从我看到的代码来看,您只是在阅读Python,而不是在编写—您的编写只是在PHP中进行的。 因此,你不应该有任何冲突。 但是,您仍然应该确保使用文件锁定机制为PHP提供文件写锁定,这样其他程序就不会导致冲突

相关问题 更多 >