使用php将多个条目附加到带有crontab的输出文件?
我正在用PHP编写一个脚本,其中我必须将系统正常运行时间、当前时间和登录系统的用户数量写入日志文件,并通过crontab不断更新 我需要的帮助是,我想在文件中积累更新并不断添加。到目前为止,每当我的脚本被执行时,最新的更新都会覆盖以前的更新 我所做的是,我试图声明一个条目数组,当我在数组中迭代时,将更新的内容推送到数组中,我可能有点不成熟的逻辑 我的代码:使用php将多个条目附加到带有crontab的输出文件?,php,scripting,crontab,cron-task,Php,Scripting,Crontab,Cron Task,我正在用PHP编写一个脚本,其中我必须将系统正常运行时间、当前时间和登录系统的用户数量写入日志文件,并通过crontab不断更新 我需要的帮助是,我想在文件中积累更新并不断添加。到目前为止,每当我的脚本被执行时,最新的更新都会覆盖以前的更新 我所做的是,我试图声明一个条目数组,当我在数组中迭代时,将更新的内容推送到数组中,我可能有点不成熟的逻辑 我的代码: $fileName = '../so-and-so directory/output.log'; $dt = date('m/d/y');
$fileName = '../so-and-so directory/output.log';
$dt = date('m/d/y');
$time = date('h:i A');
$data = shell_exec('uptime');
$uptime= explode(' up ', $data);
$uptime = explode(', ', $uptime[1]);
$uptime = $uptime[0].','.$uptime[1];
$users = system('w', $who);
$array = new SplFixedArray(3);
$fileLog = fopen($fileName, 'w');
$fileString = "Date: ".$dt. "\n". " Time: ".$time . "\n".
"System uptime ". $uptime ."\n" ."Users " . $users;
foreach ($array as $entry) {
array_push(file_put_contents($fileName, $fileString));
}
fclose($fileLog);
我觉得这个解决方案很简单,但我没有找到。有人能给我介绍一下吗 w filemode在打开时截断文件。a改为附加在末尾。有关详细信息,请参见fopen3或PHP文档
此外,文件内容正在销毁文件。改用fwrite试试。放下fopen;简单使用
file_put_contents($fileName, $fileString);
默认情况下,文件内容将覆盖现有文件
简言之:
$fileName = '../so-and-so directory/output.log';
$dt = date('m/d/y');
$time = date('h:i A');
$data = shell_exec('uptime');
$uptime= explode(' up ', $data);
$uptime = explode(', ', $uptime[1]);
$uptime = $uptime[0].','.$uptime[1];
$users = system('w', $who);
$fileString = "Date: ".$dt. "\n". " Time: ".$time . "\n".
"System uptime ". $uptime ."\n" ."Users " . $users;
file_put_contents($fileName, $fileString);
因此,我需要编辑crontab文件,如下所示:
* * * * * such-and-such-script.php >> ../so-and-so directory/output.log 2>&1
使它们附加,而不使前一个被新的覆盖。我也丢失了fopen,我没有做文件内容,而是写进了文件。现在效果很好。谢谢大家! 什么$array?它不存在这是一个有点半生不熟的逻辑对我来说,试图尝试我的脚本。我对PHP还很陌生,所以这对我来说只是一个开始。除了这个脚本之外,还有一些事情需要解决。只要调用脚本,cron作业中的任何内容实际上都不会有什么不同