20,359
社区成员
发帖
与我相关
我的任务
分享
#!/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;
}
?>