bad interpreter: Text file busy 在线等 本帖最后由 jlzan1314 于 2010-05-26 14:46:35 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 #!/usr/local/bin/php<?php set_time_limit(0); $acts=array('start','stop','status','prepare','help'); $config=array( "dbhost"=>"localhost", "dbuser"=>"xxx", "dbpw"=>'xxx', "dbname"=>"po", "charset"=>"utf8", ); $db=null; $lock="lock.txt"; if(in_array($argv[1],$acts,true) ){ $argv[1](); }else{ help(); } function start(){ global $lock,$argc,$argv,$db; if($argc===2){ if(status(true)=="starting\n"){ echo "program is also starting"; }else{ @unlink($lock); $date=date("Y-m-d"); $log="log/$date.txt"; exec(__FILE__." start back >>$log 2>&1 &");//在后台运行 } }elseif($argc===3&&$argv[2]==='back'){ $str="program is also starting\n"; if($fh=@fopen("starting.txt",'w+')){ if(flock($fh,LOCK_EX + LOCK_NB)){//只准运行一个实例 $db=get_db(); $str=''; while(1){ if(is_file($lock)){ break; } sendmail(); } } fclose($fh); } if($str){ echo $str;//报错 } }else{ echo "starting error\n"; } } function sendmail(){ $db=get_db(); echo "$i\n"; usleep(1000000*1);//间隔0.2秒发一封,一秒发5封 } function get_email_doamins($limit){ $db=get_db(); } function prepare(){ $db=get_db(); } /** * 显示信息 * */ function status($r=false){ $str="stopping\n"; if($fh=@fopen("starting.txt",'w+')){ if(!flock($fh,LOCK_EX + LOCK_NB)){ $str= "starting\n"; } fclose($fh); } if($r){ return $str; } echo $str; } function stop(){ global $lock; file_put_contents($lock,''); if(is_file($lock)){ echo "stoping\n"; }else{ echo "Error:stoping"; } } function help(){ global $acts; foreach($acts as $act){ echo __FILE__." $act\n"; } } function get_db(){ global $config; static $db=null; if(is_null($db)){ $db=new DB($config); } return $db; }?> ./file_name start 会出现这个错误. 搜了好多,没得到答案是 不是这个问题启动一个后台进程的问题.exec(__FILE__." start back >>$log 2>&1 &");//在后台运行 你这个代码是抄来的吧?$lock="lock.txt";本意是做文件锁,但代码中并没有体现 晕... 这个完全手写的,starting.txt是锁文件.这个lock.txt文件,控制进程暂停的.在stop()里面有实现啊. b2evolution3.3.0rc1简体中文版正式发布 请问一下新手看什么样的开源代码比较好 apache下php的PNG图片问题,望高手帮忙。 请问ECSHOP的静态页面生存在哪个部分,有懂行的请进 求下载YOUTUBE视频的PHP程序 百度限制LAN中 PC 机制是啥? 网站想进hao123分类得多少钱 [求助]php如何接收post过来的JSON数据 apache+nginx url重写问题 地图实现外卖搜索功能 编码小问题,40分 PHP调用Mysql存储过程,一个连接只能调用一次存储过程
<?php
set_time_limit(0);
$acts=array('start','stop','status','prepare','help'); $config=array(
"dbhost"=>"localhost",
"dbuser"=>"xxx",
"dbpw"=>'xxx',
"dbname"=>"po",
"charset"=>"utf8",
);
$db=null;
$lock="lock.txt"; if(in_array($argv[1],$acts,true) ){
$argv[1]();
}else{
help();
} function start(){
global $lock,$argc,$argv,$db;
if($argc===2){
if(status(true)=="starting\n"){
echo "program is also starting";
}else{
@unlink($lock);
$date=date("Y-m-d");
$log="log/$date.txt";
exec(__FILE__." start back >>$log 2>&1 &");//在后台运行
}
}elseif($argc===3&&$argv[2]==='back'){
$str="program is also starting\n";
if($fh=@fopen("starting.txt",'w+')){
if(flock($fh,LOCK_EX + LOCK_NB)){//只准运行一个实例
$db=get_db();
$str='';
while(1){
if(is_file($lock)){
break;
}
sendmail();
}
}
fclose($fh);
}
if($str){
echo $str;//报错
}
}else{
echo "starting error\n";
}
} function sendmail(){
$db=get_db();
echo "$i\n";
usleep(1000000*1);//间隔0.2秒发一封,一秒发5封
} function get_email_doamins($limit){
$db=get_db();
} function prepare(){
$db=get_db();
} /**
* 显示信息
*
*/
function status($r=false){
$str="stopping\n";
if($fh=@fopen("starting.txt",'w+')){
if(!flock($fh,LOCK_EX + LOCK_NB)){
$str= "starting\n";
}
fclose($fh);
}
if($r){
return $str;
}
echo $str;
} function stop(){
global $lock;
file_put_contents($lock,'');
if(is_file($lock)){
echo "stoping\n";
}else{
echo "Error:stoping";
}
} function help(){
global $acts;
foreach($acts as $act){
echo __FILE__." $act\n";
}
}
function get_db(){
global $config;
static $db=null;
if(is_null($db)){
$db=new DB($config);
}
return $db;
}
?>
启动一个后台进程的问题.
exec(__FILE__." start back >>$log 2>&1 &");//在后台运行
本意是做文件锁,但代码中并没有体现
starting.txt是锁文件.这个lock.txt文件,控制进程暂停的.在stop()里面有实现啊.