2012-02-26 4 views
7

क्रॉन लाइन देखो की तरह:crontab php फ़ाइल और आउटपुट लॉग इन करने की फ़ाइल परिणाम

*/1 * * * * /usr/bin/php /path/to/CRON.php > /path/to/log/CRON_LOG.txt 2> /dev/null 

CRON.php

<?php 
require_once 'config.php'; 
define('CRON', dirname(dirname(__FILE__))); 
$parts = explode("/",__FILE__); 
$ThisFile = $parts[count($parts) - 1]; 
chdir(substr(__FILE__,0,(strlen(__FILE__) - strlen($ThisFile)))); 
unset($parts); 
unset($ThisFile); 

$CRON_OUTPUT = "STARTING CRON @ ".date("m-d-Y H:i:s")."\r\n"; 
$CRON_OUTPUT .= CleanLog() . "\r\n"; 
$CRON_OUTPUT .= "\r\n"; 

echo $CRON_OUTPUT; 
$fh = fopen(''.CRON.'/log/CRON_LOG.txt', 'a'); 
fwrite($fh, $CRON_OUTPUT); 
fclose($fh); 
die(); 
?> 

CleanLog समारोह:

global $db; 
    $resp = ''; 
    $db->query('SQL'); 
    $resp = 'Deleted '.$db->rows_affected.' entries from table'; 
    return $resp; 

फ़ाइल में केवल इन दो पंक्तियों उस समय दिखा रहा है और कार्य करता है क्योंकि मैं दो बार निष्पादित देख सकता हूं:

CRON_LOG.txt

STARTING CRON @ 02-26-2012 21:26:01 
Deleted 0 entries from table 

STARTING CRON @ 02-26-2012 21:26:01 
Deleted 0 entries from table 

इसके साथ क्या गलत है, कारण है कि यह केवल उन पंक्तियों के उत्पादन और फ़ाइल अद्यतन नहीं करता है (फ़ाइल केवल दिनांक/समय में बदल रहा है, ज्यादा कुछ नहीं है, यह अधिक लाइनों जोड़ना चाहिए और यहां तक ​​कि आकार फ़ाइल बड़ा होना चाहिए)?

उत्तर

16

आपको >> का उपयोग > के बजाय फ़ाइल में जोड़ने के लिए पुनर्निर्देशन के लिए किया जाना चाहिए, जो स्क्रिप्ट चलाने पर प्रत्येक बार लॉग को ओवरराइट करता है।

*/1 * * * * /usr/bin/php /path/to/CRON.php >> /path/to/log/CRON_LOG.txt 2> /dev/null 
##---------------------------------------^^^^^^ 

वास्तव में के बाद से क्रॉन जॉब पहले से ही उत्पादन पुनर्निर्देशन से निपटने है स्क्रिप्ट के अंदर ही fopen()/fwrite() ऐसा करने के लिए, किसी भी आवश्यकता नहीं है।

+0

ओह, सलाह के लिए धन्यवाद और यह काम है। – ZeroSuf3r

संबंधित मुद्दे