客户端1
<?php
set_time_limit(0);
$startTime = date('Y-m-d H:i:s');
function rob($startTime)
{
$clientName = 'client1';
$fp = fopen('queue.txt', "w");
fwrite($fp, '【' . $clientName . '】 正在抢购中...' . "\r\n");
fclose($fp);
$a = 0;
while (true) {
sleep(1);
$a++;
if ($a === 10) {
file_put_contents('queue.txt', '');
$endTime = strtotime(date('Y-m-d H:i:s')) - strtotime($startTime);
exit('抢购成功-总耗时 ' . $endTime . ' 秒');
}
}
}
while (true) {
$fp = fopen('queue.txt', "a+");
if (!feof($fp)) {
$firstRow = fgets($fp);
fclose($fp);
if (!$firstRow) {
rob($startTime);
}
} else {
fclose($fp);
}
sleep(1);
if (strtotime(date('Y-m-d H:i:s')) - strtotime($startTime) > 60) {
exit('抢购超时,请重试');
}
}
客户端2
<?php
set_time_limit(0);
$startTime = date('Y-m-d H:i:s');
function rob($startTime)
{
$clientName = 'client2';
$fp = fopen('queue.txt', "w");
fwrite($fp, '【' . $clientName . '】 正在抢购中...' . "\r\n");
fclose($fp);
$a = 0;
while (true) {
sleep(1);
$a++;
if ($a === 10) {
file_put_contents('queue.txt', '');
$endTime = strtotime(date('Y-m-d H:i:s')) - strtotime($startTime);
exit('抢购成功-总耗时 ' . $endTime . ' 秒');
}
}
}
while (true) {
$fp = fopen('queue.txt', "a+");
if (!feof($fp)) {
$firstRow = fgets($fp);
fclose($fp);
if (!$firstRow) {
rob($startTime);
}
} else {
fclose($fp);
}
sleep(1);
if (strtotime(date('Y-m-d H:i:s')) - strtotime($startTime) > 60) {
exit('抢购超时,请重试');
}
}
客户端1网页输出如下
抢购成功-总耗时 10 秒
客户端2网页输出如下
抢购成功-总耗时 18 秒