救命啊,php奇怪问题

lfkcn 2011-03-21 04:22:55
我有两段php代码。第一段代码是在硬盘上创建一个folder,然后用system调用linux的cp命令copy一些文件到这个folder。
第二段代码是更新后台mysql数据库的一些表。
两段代码分开执行,都没有问题。放在一块就死活不行,报错是前台extjs报出来的,说是与mysql通信错误,mysql的log也看不出什么问题。只能肯定不是语法,变量赋值啥的问题。
求高人们给点思路。
另外,在apache的log中也没有看出什么有用的信息
...全文
130 点赞 收藏 11
写回复
11 条回复
daly2008 2011年03月22日
建议你把第一段代码拿出去,比如写个batch.php文件
$cmd = "/usr/bin/php 文件路径/batch.php"; //通过php命令去执行文件操作
$rt = system( $cmd . ' >> /var/log/aa/aa.log &', $rt2);

在下面继续你的mysql操作.这样子,上面的文件操作可以转入后台去执行.而不影响你下面的程序.
回复 点赞
lfkcn 2011年03月22日
[Quote=引用 8 楼 hnxxwyq 的回复:]

mysql的连接时间超时是多长时间?

另外建立mysql连接的时候,为什么不等第一段代码执行完毕以后才进行连接(或者进行再次连接)?
[/Quote]

超时是默认的8小时
mysql的链接是通过thinkphp的框架来做的,不是每次都重新连接的。
回复 点赞
lfkcn 2011年03月22日
[Quote=引用 10 楼 daly2008 的回复:]

建议你把第一段代码拿出去,比如写个batch.php文件
$cmd = "/usr/bin/php 文件路径/batch.php"; //通过php命令去执行文件操作
$rt = system( $cmd . ' >> /var/log/aa/aa.log &', $rt2);

在下面继续你的mysql操作.这样子,上面的文件操作可以转入后台去执行.而不影响你下面的程序.
[/Quote]
第一段很多变量是要在整个function用到或者获取的啊,不好传递参数。
回复 点赞
lazyboy_wu 2011年03月21日
mysql的连接时间超时是多长时间?

另外建立mysql连接的时候,为什么不等第一段代码执行完毕以后才进行连接(或者进行再次连接)?
回复 点赞
lfkcn 2011年03月21日
[Quote=引用 5 楼 hst0012010 的回复:]

20秒.......
引用 4 楼 lfkcn 的回复:

代码的逻辑是没有错的,我分别执行的时候已经检查过了。
现在我主要是担心:
两部分代码都要执行的时间稍长,大概各需20秒左右,这会不会造成php或者mysql连接有问题?
[/Quote]

20秒太长了?我设置过php.ini中的max_execution_time为300,没解决这个问题
还有别的办法可以试试吗?
回复 点赞
朱丽叶与驴斗殴 2011年03月21日
20秒.......
[Quote=引用 4 楼 lfkcn 的回复:]

代码的逻辑是没有错的,我分别执行的时候已经检查过了。
现在我主要是担心:
两部分代码都要执行的时间稍长,大概各需20秒左右,这会不会造成php或者mysql连接有问题?
[/Quote]
回复 点赞
lfkcn 2011年03月21日
代码的逻辑是没有错的,我分别执行的时候已经检查过了。
现在我主要是担心:
两部分代码都要执行的时间稍长,大概各需20秒左右,这会不会造成php或者mysql连接有问题?
回复 点赞
llj480028 2011年03月21日
什么也看不出来!!
回复 点赞
lfkcn 2011年03月21日
第一段php

//9 insert the project folder into the disk and copy script files
$dir='/home/automation/wats/script/'.$productName.'/'.$projectName;
if(!is_dir($dir)){
$res=mkdir($dir);
chmod($dir,0777);
if($res){
//$msg=$msg.'add the project folder into the disk automatically!<br/>';
$sourcedirectory='/home/automation/wats/script/'.$productName.'/'.$original_projectname;

//$copycommand='cp -r '.$sourcedirectory.'/* '.$dir;
$copycommand="cp -r $sourcedirectory/* $dir";
$lastline=system($copycommand,$commandresult);

if(!$commandresult){
$msg=$msg.'Copy scripts files successfully!<br/>';
}else{
$msg=$msg.'Fail to copy scripts files!<br/>';
}

}else{
$msg=$msg.'FAIL to add the project folder into the disk!Please check it in the disk!';
}

}else{
$msg=$msg.'the folder['.$dir.'] has already existed in the disk!FAIL to create!';
}


第二段php

for($j=0;$j<count($selectoriginalscriptresult);$j++){
$data_tempscript['originalid']=$selectoriginalscriptresult[$j]['id'];
$data_tempscript['originalname']=$selectoriginalscriptresult[$j]['name'];
$data_tempscript['copyid']=$selecttargetscriptresult[$j]['id'];
$data_tempscript['copyname']=$selecttargetscriptresult[$j]['name'];
//$temp_scriptresult=$temp_script->add($data_tempscript);
$datastring=$datastring.'('.$data_tempscript['originalid'].",'".$data_tempscript['originalname']."',".$data_tempscript['copyid'].",'".$data_tempscript['copyname']."'),";
}
$temp_scriptsql="insert into `temp_script` values $datastring";
//echo $temp_scriptsql;
$copyproject->query($temp_scriptsql);


就怕这两段代码上了之后更乱,嘿嘿。
请高人指教
回复 点赞
daly2008 2011年03月21日
上代码吧。呵呵
回复 点赞
发动态
发帖子
基础编程
创建于2007-09-28

9734

社区成员

14.0w+

社区内容

从PHP安装配置,PHP入门,PHP基础到PHP应用
社区公告
暂无公告