将 Lumen 路由中的 运行 代码一次限制为一个呼叫者
Restrict running code in Lumen route to one caller at a time
我正在使用 Lumen 开发一个小型应用程序,该应用程序的路由开销 运行。我想确保一次只有一个人可以走这条路线。如果第二个人试图在另一个人 运行 走这条路线时,应用程序应该 return 一条消息说 "Please try again in a few minutes." 我怎样才能完成这个?
使用互斥量。如果您的应用程序在具有本地文件系统的单个主机上运行,您可以使用 flock:
public function my_controller() {
$fp = fopen('lockfile', 'r');
if (! flock($fp)) die('Try again later');
// do expensive thing...
funlock($fp);
fclose($fp);
}
如果你有一个机器集群,或者机器的磁盘是网络挂载的,使用数据库互斥体。例如,在 mysql:
do get_lock('lock');
我正在使用 Lumen 开发一个小型应用程序,该应用程序的路由开销 运行。我想确保一次只有一个人可以走这条路线。如果第二个人试图在另一个人 运行 走这条路线时,应用程序应该 return 一条消息说 "Please try again in a few minutes." 我怎样才能完成这个?
使用互斥量。如果您的应用程序在具有本地文件系统的单个主机上运行,您可以使用 flock:
public function my_controller() {
$fp = fopen('lockfile', 'r');
if (! flock($fp)) die('Try again later');
// do expensive thing...
funlock($fp);
fclose($fp);
}
如果你有一个机器集群,或者机器的磁盘是网络挂载的,使用数据库互斥体。例如,在 mysql:
do get_lock('lock');