Скриптинг — добавление нескольких записей в выходной файл с помощью crontab с использованием php?

Я пишу скрипт на 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);

Я чувствую, что решение очень простое, но мне его не хватает. Кто-нибудь, пожалуйста, подскажите мне?

0

Решение

Файловый режим «w» усекает файл при открытии. «а» добавляет к концу вместо. Увидеть fopen(3) или документацию PHP для деталей.

Также, file_put_contents() уничтожает файл Пытаться fwrite() вместо.

0

Другие решения

капля fopen; просто используйте

file_put_contents($fileName, $fileString);

file_put_contents перезапишет существующий файл по умолчанию.

Короче:

$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);
0

Вот и получается, что мне нужно было отредактировать мой файл crontab следующим образом:

* * * * * such-and-such-script.php >> ../so-and-so directory/output.log 2>&1

Чтобы они добавлялись без того, чтобы предыдущий был перезаписан новым. Я также потерял fopen () и вместо того, чтобы выполнить file_put_contents, я сделал fwrite () в файл. Это прекрасно работает сейчас. Спасибо!

0