2017-02-09 5 views
-1

У меня есть код PHP, который пишет cronjobs в crontab с помощью этого кода.Как писать в crontab без записи во временный файл с использованием PHP

 $output = shell_exec('crontab -l'); 

     file_put_contents('/tmp/crontab.txt', $output . $command . PHP_EOL . PHP_EOL); 
     exec('crontab /tmp/crontab.txt'); 

Он работает на 100% хорошо. Но проблема в том, что многие пользователи получат доступ к приложению, поэтому файлы не будут переписаны? если не переписан, я уверен, что будет другая проблема.

Мой вопрос заключается в том, как написать/добавить в crontab одну команду без записи этого содержимого cron в файл temp?

Я пробовал что-то вроде echo "cron here" > crontab, но не работал.

+0

Если несколько пользователей используют данный код в то же время, попробуйте ввести thread-safe, добавив идентификатор сессии в имя файла .txt. Но вы правы, должно быть решение не использовать временный файл :) – Random

+0

читать файл с помощью 'file_get_content', а затем переписывать только файл? – bugscoder

+0

@Random Да Я предпочитаю одну команду BASH/Shell для этого. вместо написания временного файла. – Umair

ответ

1

Давайте будем честными, но сколько раз может произойти это изменение согласия к кронтабу? Я бы предпочел какой-то механизм блокировки для этого случая. Например, создайте .lock-файл, когда пользователь откроет файл и удалит файл .lock после завершения редактирования. Если другой пользователь захочет редактировать crontab и .lock, он не будет допущен.

+0

2-строчный процесс является коротким для запуска, поэтому у вас будет такая же проблема с использованием файла .lock, если 2 пользователя будут писать файл .lock одновременно ... – Random

+0

@Random вы правы ... Я все еще думаю о решении: P – Umair

+0

Я не хотел использовать только операцию импорта /tmp/crontab.txt, но весь процесс редактирования cron (если бы я понял это правильно) в упомянутом приложении. Как вы хотите управлять ситуацией, когда, например, 20 пользователей, добавит то же самое? –

 Смежные вопросы

  • Нет связанных вопросов^_^