Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php将多个条目附加到带有crontab的输出文件?_Php_Scripting_Crontab_Cron Task - Fatal编程技术网

使用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');

我正在用PHP编写一个脚本,其中我必须将系统正常运行时间、当前时间和登录系统的用户数量写入日志文件,并通过crontab不断更新

我需要的帮助是,我想在文件中积累更新并不断添加。到目前为止,每当我的脚本被执行时,最新的更新都会覆盖以前的更新

我所做的是,我试图声明一个条目数组,当我在数组中迭代时,将更新的内容推送到数组中,我可能有点不成熟的逻辑

我的代码:

$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作业中的任何内容实际上都不会有什么不同