在php中执行bash if else命令(bash vs php)

在php中执行bash if else命令(bash vs php),php,bash,shell,exec,Php,Bash,Shell,Exec,我想要实现的目标 我想执行一些脚本,它的进程没有在服务器上启动。因此,我在shell脚本中准备命令,并在单行中执行它 带有php变量的命令 $cmd = "if [[ `ps auxww | grep -v grep | grep ".$process_file." | grep '".$find."'` == '' ]] ; then ".$cmd2." fi"; echo $cmd."\n"; 在替换变量后执行命令(bash上实际运行的是什么): if [[ `ps auxww |

我想要实现的目标 我想执行一些脚本,它的进程没有在服务器上启动。因此,我在shell脚本中准备命令,并在单行中执行它

带有php变量的命令

$cmd = "if [[ `ps auxww | grep -v grep | grep ".$process_file." | grep '".$find."'`  == '' ]] ; then ".$cmd2."  fi";

echo $cmd."\n";
在替换变量后执行命令(bash上实际运行的是什么):

if [[ `ps auxww | grep -v grep | grep /home/new_jig.php | grep 'test_51 1714052'`  == '' ]] ; then  php /home/new_jig.php test_51 1714052 & fi;
执行命令

exec($cmd,$out,$res);
请注意,我还将问题分为两个语句并执行它们。但这很费时。当我的列表中有2000多个时,它会导致问题,并且该命令会针对所有人执行。达到最后一个数字大约需要1分钟或1分钟以上

我想在10秒内实现这一目标。请帮助我达到最佳产量

谢谢
Jignesh

不知何故,我能够使用以下命令使其执行

$process_file=phpfile,执行某些功能

$cmd2=“
php.$process\u file.”1212>/dev/null 2>/dev/null&

$cmd11=“如果
ps-auxw | grep-v grep | grep”“。$process_file.''''grep'.$find.'&>/dev/null
;则echo 1;“$cmd2.”fi”

shell_exec($cmd11.>/dev/null 2>/dev/null&“)

在此之前:对于1100请求,该过程大约需要60多秒
在此之后:它将在20到30秒之间完成。

“我想在10秒内完成”—这个神奇数字的具体原因是什么?您可能还想解释脚本的实际功能是什么?您似乎还在bash脚本中执行一些PHP代码。这个脚本做什么?我们有一个守护进程,每3秒运行一次,它会触发多个php进程(2000+)。从第三方网站获取数据。目前的问题是,若我使用下面的方法,那个么到达终点需要一分钟以上的时间$cmd=“ps auxww | grep-v grep | grep.$process_文件。”| grep.$find.>/dev/null 2>&1”;exec($cmd,$out,$res);根据结果,我执行了类似于。。。php/home/new_jig.php test_511714052@Nic3500-那个包不是也在生成shell命令吗?所以基本上,它只是把电话从一个地方转到另一个地方?关于
grep
if-then-else
,我怀疑如果在PHP和CLI中使用它们,会不会有任何性能差异。@MagnusEriksson;事实上,可能是因为我没有深入研究代码。CLI必须启动一个shell来运行每个命令,在PHP中处理文本(或数组)要比启动一堆shell快得多。我有时会将较长的bash脚本重写为Perl(或其他),这种差异简直是疯了!因此,我建议在考虑速度的情况下,尽量少使用bash。@MagnusEriksson:事实上,我删除了我的评论,重写如下。