请写一段PHP代码,确保多个进程同时写入同一个文件成功
function writeData($path, $mode,$data,$max_retries = 10)
{
$fp = fopen($path, $mode);
$retries = 0;
do{
if ($retries > 0)
{
usleep(rand(1, 10000));
}
echo '等待时间:'.$retries;
$retries += 1;
}while (!flock($fp, LOCK_EX) and $retries<= $max_retries);
//判断是否等于最大重试次数,是则返回false
if ($retries == $max_retries)
{
return false;
}
fwrite($fp, "$data");
flock($fp, LOCK_UN);
fclose($fp);
return true;
}
2.array_merge 和 array+array 区别
(1)第一个数组键包含在第二个数组中
$arr1=array('name'=>'lxw','age'=>12,'sex'=>1);
$arr2=array('name'=>'king','age'=>22,'sex'=>2,'tel'=>'123456');
$arr3=array('1'=>'lxw','2'=>12,'3'=>1);
$arr4=array('1'=>'king','2'=>22,'3'=>2,'4'=>'123456');
echo '<pre>';
echo '关联数组 - merger: <br>';
print_r(array_merge($arr1,$arr2));
echo '<pre>';
echo '<pre>';
echo '关联数组 - 加号: <br>';
print_r($arr1+$arr2);
echo '<pre><hr>';
echo '<pre>';
echo '索引数组 - merger: <br>';
print_r(array_merge($arr3,$arr4));
echo '<pre>';
echo '<pre>';
echo '索引数组 - 加号: <br>';
print_r($arr3+$arr4);
echo '<pre>';
(2)第一个数组存在第二个数组中不存在的键
$arr1=array('name'=>'lxw','age'=>12,'sex'=>1,'address'=>'bj'); //新增address
$arr2=array('name'=>'king','age'=>22,'sex'=>2,'tel'=>'123456');
$arr3=array('1'=>'lxw','2'=>12,'3'=>1,'4'=>'bj');//新增4键名
$arr4=array('1'=>'king','2'=>22,'3'=>2,'4'=>'123456');
echo '<pre>';
echo '关联数组 - merger: <br>';
print_r(array_merge($arr1,$arr2));
echo '<pre>';
echo '<pre>';
echo '关联数组 - 加号: <br>';
print_r($arr1+$arr2);
echo '<pre><hr>';
echo '<pre>';
echo '索引数组 - merger: <br>';
print_r(array_merge($arr3,$arr4));
echo '<pre>';
echo '<pre>';
echo '索引数组 - 加号: <br>';
print_r($arr3+$arr4);
echo '<pre>';
求一键三连:点赞、转发、在看。