为什么PHP会在输入时删除文件的内容?

为什么PHP会在输入时删除文件的内容?,php,Php,我有一个文件:configuration.txt 此文件由PHP读取,然后由同一PHP编写,而C++程序以相同的间隔读取同一文件的内容。 PHP: C++ char configFilePath[]=“/var/www/html/configuration.txt”; std::fstream配置文件; open(configFilePath,std::fstream::in); if(configFile.is_open()){ //做事 }否则{ std::cout在PHP中锁定文件时,锁定

我有一个文件:
configuration.txt

此文件由PHP读取,然后由同一PHP编写,而C++程序以相同的间隔读取同一文件的内容。 PHP:

C++

char configFilePath[]=“/var/www/html/configuration.txt”;
std::fstream配置文件;
open(configFilePath,std::fstream::in);
if(configFile.is_open()){
//做事
}否则{

std::cout在PHP中锁定文件时,锁定的是锁定文件,而不是主文件。示例:

$myfile = 'myfile.txt';
$lockfile = 'myfile.lock';
$lock = fopen($lockfile,'a');
if(flock($lock, LOCK_EX)) // The lock file is locked in exclusive mode - so I can write to it.
{
  $fp = fopen($myfile,'w');
  fputs($fp, "I am writing safely!");
  fclose($fp);
  flock($lock, LOCK_UN); // Always unlock it!
}
fclose($lock);

你在C++中工作类似,因为PHP没有锁定实际文件。它锁定了一个锁文件。确切的语法很大程度上依赖于你的C/C++和操作系统的版本。所以,我将使用最小的语法。< /P>

int lock=fopen(lockfile, "r+");
if(flock(fileno(lock), LOCK_EX))
{
  //Locked. You can open a stream to ANOTHER file and play with it.
  flock(fileno(lock), LOCK_UN));
}
fclose(lock);

在PHP中锁定文件时,锁定的是锁定文件,而不是主文件。示例:

$myfile = 'myfile.txt';
$lockfile = 'myfile.lock';
$lock = fopen($lockfile,'a');
if(flock($lock, LOCK_EX)) // The lock file is locked in exclusive mode - so I can write to it.
{
  $fp = fopen($myfile,'w');
  fputs($fp, "I am writing safely!");
  fclose($fp);
  flock($lock, LOCK_UN); // Always unlock it!
}
fclose($lock);

你在C++中工作类似,因为PHP没有锁定实际文件。它锁定了一个锁文件。确切的语法很大程度上依赖于你的C/C++和操作系统的版本。所以,我将使用最小的语法。< /P>

int lock=fopen(lockfile, "r+");
if(flock(fileno(lock), LOCK_EX))
{
  //Locked. You can open a stream to ANOTHER file and play with it.
  flock(fileno(lock), LOCK_UN));
}
fclose(lock);


为什么你不把文件锁定在C++中呢?你需要在打开文件之前锁定它,而不是在文件之后。顺序是:锁定文件,打开文件,关闭文件,解锁文件。你需要让每个程序执行相同的锁定例程,或者你将有一个竞争条件。你用PHP打开文件,使用<代码> w <代码>标志:'W '打开,只供书写;ACE文件指针在文件的开头,截断文件为零长度。如果文件不存在,尝试创建它。@ KAIAWAN,因为在C++中锁文件非常困难。你如何锁定<代码> STD::fStaseFieldFiels> < /Cord>?@ JiBestOOS:你看到了在打开代码中的代码是什么吗?帽子指向文件。@你锁定了一个“锁”文件,以指示主文件已被锁定。这是标准的实践。为什么不将文件锁定在C++中?还需要在打开文件之前锁定文件,而不是在文件之后。顺序是:锁定文件,打开文件,关闭文件,解锁文件。您需要使每个程序执行相同的锁定例程,否则您将有竞争条件。使用PHP使用<代码> W/CONT>标志:仅写WE';将文件指针放在文件的开头,截断文件为零长度。如果文件不存在,尝试创建它。@ KAIAWAN,因为在C++中锁文件非常困难。如何锁定<代码> STD::fStaseFixFrfile;< /Calp>?@ JBBESTOOOS,您看到WH了吗?在
w
模式下打开文件后会出现at?它是一个与文件相关的代码。@bleah1您锁定了一个“锁”文件,以指示主文件被锁定。这是一个标准文件。即使我读文件,是否需要一个锁文件?对于这个特定文件,只有PHP写在里面,C++才从它读取。如果你想锁定,你需要一个锁文件。如果你正在阅读,你用LoxSyh锁定。如果你在编辑,你用LoCuxEx锁定。C++中的<代码>变量,如果你使用“FPEN”不要尝试使用锁。把这个项目传递给别人。因为别人没有,我不能把它传给别人。我只有学习我自己。我需要学习如何做这个文件。即使我读了文件,我也需要一个锁文件吗?对于这个特殊的文件,只有PHP写在里面,C++才从它读取。如果你想锁定,你需要一个锁文件。你正在阅读,你用LoxSyh锁定。如果你在编辑,你用LoCyxEx锁定。还有,谁是C++中的代码>锁文件< /COD>?变量。如果你使用“FOpenD”,那么你就被困了。,不要尝试使用锁。将此项目传递给其他人。我不能传递给其他人,因为没有其他人。只有我。我需要学习如何做这些事情。