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()里面有实现啊. php 语言切换代码(谁有更好的也可以把代码发过来看看) 为大家提供一个原创的开发自己的MVC框架视频教程 PHP单点登录问题,新人求帮助 网站服务器的问题,连接指定网页经常无法显示 如何自己用PHP编写伪代码程序.. mysql 排序问题 PHP网站修改,报酬1000,有兴趣的速联系 白痴的js控制disabled问题. php目录树问题,求解答,感激不尽 网站换图片,替换完了之后显示的还是之前的图片,浏览器缓存也清理了 编码小问题,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()里面有实现啊.