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

时间:2015-04-29 04:59:10

标签: php python

所以在这里,我正在开发一个可以通过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($file, 'up');
         break;
    case 'down':
         fwrite($file, 'down');
         break;
    case 'left':
         fwrite($file, 'left');
         break;
    case 'right':
         fwrite($file, 'right');
         break;
  }
fclose($file);

谢谢!

2 个答案:

答案 0 :(得分:0)


避免在两个程序中同时访问该文件。因为可能会出现一些问题。试想一下我们在读写的同时。

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

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

答案 1 :(得分:0)

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

相关问题