大家好,我创建了一个脚本,用于删除运行超过 n 小时的 PHP 进程。我认为这是糟糕的代码,并且想听听您对如何改进此代码的意见,例如可以使用更多逻辑命令的地方。我会将此脚本添加到 Crontab。在我看来,它将被删除并且它不会工作。
我怎样才能让他忽略自己?
<?php
if(!isset($argc) || $argc != 2 || !is_numeric($argv[1])){
echo "Ошибка. Синтакс : \e[32mphp processKill.php [valoarea in secunde]\e[39m." . PHP_EOL;
exit;
}elseif (isset($argc) && $argc === 2){
$filename = __DIR__ . "/ResultProcessKill/" . date("Y-m-d_H-i-s") . ".txt";
$process = shell_exec("ps -eo pid,lstart,cmd | grep php");
$arrayProcess = explode(PHP_EOL, $process);
$arrayProcessPart = [];
$curentDate = date("Y-m-d H:i:s");
$month = ["Jan" => 1,"Feb" => 2,"Mar" => 3,"Apr" => 4,"May" => 5, "Jun" => 6, "Aug" => 7, "Aug" => 8, "Sep" => 9, "Oct" => 10, "Nov" => 11, "Dec" => 12];
$deleteTime = $argv[1];
for($i = 0; $i < count($arrayProcess) - 1; $i++){
$arrayProcess[$i] = trim($arrayProcess[$i]);
$arrayProcessPart[$i] = preg_split(" /[\s,]+/", $arrayProcess[$i]);
$processDate[$i] = $arrayProcessPart[$i][5] . "-" . $month[$arrayProcessPart[$i][2]] . "-" . $arrayProcessPart[$i][3] . " " . $arrayProcessPart[$i][4];
$diffDate = strtotime($curentDate) - strtotime($processDate[$i]);
if($diffDate < $deleteTime){
$deleteTextProcess = "kill " . $arrayProcessPart[$i][0];
shell_exec($deleteTextProcess);
$result = "\e[31m";
$addTex = "Удалён - ";
}else{
$result = "\e[39m";
$addTex = "";
}
//$text = "Скрипт работает : " . $diffDate . " сек." . PHP_EOL . $arrayProcess[$i] . PHP_EOL;
$text = $result . $arrayProcess[$i] . PHP_EOL;
echo $text;
file_put_contents($filename, $addTex . $text, FILE_APPEND);
}
}
?>
好吧,你要求它...... :)