2017-02-09 2 views
-1

이 코드를 사용하여 crontab에 cronjob을 쓰는 PHP 코드가 있습니다.PHP를 사용하여 임시 파일에 쓰지 않고 crontab에 쓰는 방법

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

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

100 % 잘 작동합니다. 그러나 문제는 많은 사용자가 응용 프로그램에 액세스하므로 파일을 덮어 쓰지 않을 것입니다. 과도하게 작성되지 않으면 다른 문제가있을 것이라고 확신합니다.

제 질문은 어떻게 임시 파일에 그 cron 내용을 쓰지 않고 단일 명령을 사용하여 crontab에 추가/추가합니까?

echo "cron here" > crontab과 같은 것을 시도했지만 작동하지 않았습니다.

+0

여러 사용자가 동시에이 코드를 사용할 수 있다면 스레드 안전성을 유지하려고 시도 할 수 있습니다. 따라서 세션 ID를 .txt 파일의 이름에 추가 하시겠습니까? 하지만 당신 말이 맞아요, 임시 파일을 사용하지 않는 해결책이 있어야합니다 :) – Random

+0

'file_get_content'를 사용하여 파일을 읽은 다음 파일에만 다시 씁니까? – bugscoder

+0

@Random 예 그렇게하기 위해 단일 BASH/Shell 명령을 선호합니다. 임시 파일을 작성하는 대신 – Umair

답변

1

솔직히 말해서이 concurence를 crontab에 몇 번이나 편집 할 수 있습니까? 나는이 경우에 어떤 종류의 잠금 장치를 선호 할 것이다. 예를 들어, 사용자가 파일을 열고 편집이 완료되면 .lock 파일을 삭제할 때 .lock 파일을 작성하십시오. 다른 사용자가 crontab을 편집하고 .lock이있을 경우 해당 사용자는 허용되지 않습니다.

+0

2 줄 프로세스가 다소 짧아서 2 명의 사용자가 동시에 .lock 파일을 쓰면 .lock 파일을 사용하여 동일한 concurence 문제가 발생할 수 있습니다. – Random

+0

@ 임의대로 맞습니다 ... 나는 여전히 솔루션에 대해 생각하고있다. P – Umair

+0

.tmp/crontab.txt를 가져 오는 작업 만 .lock하지만 모든 응용 프로그램에서 cron 편집 프로세스 (내가 제대로 이해할 수있는 경우)를 수행하는 것을 의미하지는 않는다. 예를 들어 20 명의 사용자가 같은 것을 추가 할 때 상황을 어떻게 관리하고 싶습니까? –

관련 문제