巅云智能建站平台搭建版(创业流派版)火爆上线,毕生受权!新增:文章智能收罗+全站真静态打包+城市分站+智能小法式+不法词过滤+H5自顺应+智能链词等功效功效概况
赞助文档Help

php中完成历程锁与多历程的体例

一佰互联网站建造(www.taishanly.com) 宣布日期 2020-04-26 09:03:51 阅读数: 111

为甚么须要历程锁?

首要感化便是避免你反复履行统一法式,首要用在crontab中,当你设置了一个按时使命,而后每分钟履行一次,若是不加历程锁的话,之前的历程不履行完的情况下。每分钟城市有新的历程天生了。加上历程锁以后,每次按时使命履行的时辰,就会去判定之前的历程锁是不是存在,若是存在就不履行。

1.单历程的情况的历程锁完成

间接来个例子好了,写个php剧本, 就先定名为process.php吧,代码以下:

<?php
$lock_file = dirname(__FILE__) . "/process.lock";
$lock_file_handle = fopen($lock_file, "w");
if ($lock_file_handle === false)
 die("Can not create lock file {$lock_file}
");
if (!flock($lock_file_handle, LOCK_EX + LOCK_NB)) {
 die(date("Y-m-d H:i:s") . " Process already exists.
");
}

while(1){
}

而后在linux情况下,履行这个代码,第一次会普通运转,而后第二次运转的时辰就会提醒:Process already exists. 以后不管履行几多次城市呈现这个提醒表现历程失利了。

php process.php & //&标记表现在背景运转php


上面的代码一样能够操纵在你按时打算的剧本里,在开首加上就行了。相称于对单个剧本加上历程锁。

2.历程锁完成多历程

上面说的是一个锁对应一个php剧本,那要用历程锁完成多历程的话,实在便是让一个历程能够有多个历程锁就行了。
对上面的代码的历程锁的名字局部略加点窜便可完成,按照传出去的参数来决议历程锁的名字,若是传出去的参数分歧则对应统一个锁。

if(!($argc > 1))
{
 $lock_file = dirname(__FILE__) . "/process.lock";
}else{
 unset($argv[0]);
 $lock_file = dirname(__FILE__) . "/process". implode(".", $argv) .".lock";
}

$lock_file_handle = fopen($lock_file, "w");
if ($lock_file_handle === false){
 die("Can not create lock file $lock_file
");
}

if (!flock($lock_file_handle, LOCK_EX + LOCK_NB)) {
 die(date("Y-m-d H:i:s") . " Process already exists.
");
}

while(1){
}

在linux情况下。进入文件地点目次,履行php process.php 1, 而后新开个窗口,在履行php process.php 1,就会提醒Process already exists这个毛病,可是若是你履行的是php process.php 2,就会普通运转,一样,你能够传两个参数,如php process.php 1 2,如许的话,对应的又是新的历程锁。这个完成首要用到的是argc和argv 这两个php自带的参数,argc表现参数总数,argv 表现详细挪用的时辰用的是哪一个参数。

3.历程锁在yii2中的完成

在yii2中要完成多历程的历程锁的话,要担当yii的console里的节制器,如许能完成参数的通报,use yiiconsoleController;
而后在crontab中,号令以下,用yii自带的号令来履行按时剧本。而后历程锁的代码和上面的一样就能够够了。

* * * * * root /usr/local/bin/php /data/www/html/newVanish/yii 节制器名/体例 通报的参数 > /dev/null 2>&1

4.杀死历程的号令

这个相对是压箱底的工具了,普通人我不告知他。
经由进程一条号令就能够删除对应的历程。上面的号令便是能够间接删除历程名字为 process_name 的一切历程。要删除甚么只需间接将 process_name点窜成你想要删除的历程名字就能够够了

ps aux|grep process_name |grep -v grep|awk "{print $2}"|xargs kill -9

总结

以上便是对于php中历程锁与多历程完成的全数内容,但愿这篇文章的内容对大师进修或利用PHP能有所赞助,若是有疑难大师能够留言交换,感谢大师对网页设想的撑持。

一佰互联是天下着名建站品牌办事商,咱们有九年、网站建造、网页设想、php开辟和域名注册及假造主机办事经历,供给的办事更是天下着名。比来几年来还整合团队上风自立开辟了可视化多用户”“3.0平台版,拖拽排版网站建造设想,轻松完成pc站、手机微网站、小法式、APP一体化全网营销网站扶植 ,已胜利的为天下上百家收集公司供给自助建站平台搭建办事。

相干消息more

25
04月
PHP序列化的四种完成体例与横向对照

一、PHP 序列化变量的 4 种体例序列化是将变量转换为可保管或传输的字符串的进程;反序列化便是在恰当的时辰把这个字符串再转化成本来的变量使... >>概况

28
04月
php摹拟办事器完成autoindex结果的

本文实例报告了php摹拟办事器完成autoindex结果的体例。分享给大师供大师参考。详细完成体例以下:1.PHP代码以下: 复制代码 代码... >>概况

02
05月
若何优化京东长尾词流量? 电商网站优化长尾

据领会,京东关头词排序的相干机能够分为以下几种:1、关头词10%2、产物40%3、店肆反应批评50%笔者比来也在研讨大型商城网站SEO特点,... >>概况

18
06月
购假造主机咱们代为建站-网站扶植套餐680元

购假造主机咱们代为建站网站扶植套餐A 打算功效功效:企业宣扬 套餐价钱:680 元合用工具:价钱昂贵,机能价钱比高,合用于想经由进程成立网 站进... >>概况

高端网站扶植

美工统筹SEO,为企业电子商务营销助力!

德律风:

023-85725751
建站

产物

域名注册 假造主机 云办事器 企业邮局
智能建站 APP打包 微站/小法式 创业平台
网站推行 媒体营销 智能收罗 AI机械人
400德律风 短信营销 店销机械人
私家定制 流派网站