我在Java / Java EE方面有很好的经验,但我对PHP很新。我想要共享一个变量的值(包含一个String标记)有一个小的要求 满足不同的用户请求。现在的问题是我想让这个变量线程的读写安全i。一次只有一个用户可以读/写 在这个变量中。
如果我是用Java做的话,我只需要使用synchonized关键字锁定一个对象,并将代码块(读/写)放在同步块中。
这里在PHP中我已经将令牌放在GLOBALS数组中,但是我无法通过哪种方式使这个可变线程的读写安全。我在避免 使用任何外部库来避免依赖。请指导我如何实现这一目标。
答案 0 :(得分:1)
您可以使用PECL pthreads。哪个需要安装。
您可以从以下位置查看用法: http://php.net/manual/en/threaded.synchronized.php
或者更简单的解决方案是锁定文件。
$fp = fopen("/tmp/lock.txt", "r+");
if (flock($fp, LOCK_EX)) { // acquire an exclusive lock
ftruncate($fp, 0); // truncate file
fwrite($fp, "Write something here\n");
fflush($fp); // flush output before releasing the lock
flock($fp, LOCK_UN); // release the lock
} else {
echo "Couldn't get the lock!";
}
fclose($fp);