pass logfile to child tasks if locking is possible, lock logfile before writing, add kludge to prevent update_rss_feed unneeded debugging go into master logfile

This commit is contained in:
Andrew Dolgov 2013-09-02 12:33:59 +04:00
parent f73e03e000
commit a33558a61e
3 changed files with 28 additions and 1 deletions

View File

@ -139,6 +139,8 @@
* @return void * @return void
*/ */
function _debug($msg, $show = true) { function _debug($msg, $show = true) {
if (defined('SUPPRESS_DEBUGGING'))
return false;
$ts = strftime("%H:%M:%S", time()); $ts = strftime("%H:%M:%S", time());
if (function_exists('posix_getpid')) { if (function_exists('posix_getpid')) {
@ -153,7 +155,29 @@
$fp = fopen(LOGFILE, 'a+'); $fp = fopen(LOGFILE, 'a+');
if ($fp) { if ($fp) {
$locked = false;
if (function_exists("flock")) {
$tries = 0;
// try to lock logfile for writing
while ($tries < 5 && !$locked = flock($fp, LOCK_EX | LOCK_NB)) {
sleep(1);
++$tries;
}
if (!$locked) {
fclose($fp);
return;
}
}
fputs($fp, "[$ts] $msg\n"); fputs($fp, "[$ts] $msg\n");
if (function_exists("flock")) {
flock($fp, LOCK_UN);
}
fclose($fp); fclose($fp);
} }
} }

View File

@ -194,6 +194,8 @@
$debug_enabled = defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']; $debug_enabled = defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug'];
if (!$debug_enabled) define('SUPPRESS_DEBUGGING', true);
_debug("start", $debug_enabled); _debug("start", $debug_enabled);
$result = db_query("SELECT id,update_interval,auth_login, $result = db_query("SELECT id,update_interval,auth_login,

View File

@ -218,10 +218,11 @@
register_shutdown_function('task_shutdown'); register_shutdown_function('task_shutdown');
$quiet = (isset($options["quiet"])) ? "--quiet" : ""; $quiet = (isset($options["quiet"])) ? "--quiet" : "";
$log = function_exists("flock") && isset($options['log']) ? '--log '.$options['log'] : '';
$my_pid = posix_getpid(); $my_pid = posix_getpid();
passthru(PHP_EXECUTABLE . " update.php --daemon-loop $quiet --task $j --pidlock $my_pid"); passthru(PHP_EXECUTABLE . " update.php --daemon-loop $quiet $log --task $j --pidlock $my_pid");
sleep(1); sleep(1);