芝麻web文件管理V1.00
编辑当前文件:/home/strato/chroot/opt/RZphp80/includes/doc/System_Daemon/examples/custtemplate.php
#!/usr/bin/php -q * @copyright 2008 Kevin van Zonneveld * @license http://www.opensource.org/licenses/bsd-license.php * @link http://github.com/kvz/system_daemon */ /** * System_Daemon Example Code * * If you run this code successfully, a daemon will be spawned * but unless have already generated the init.d script, you have * no real way of killing it yet. * * In this case wait 3 runs, which is the maximum for this example. * * * In panic situations, you can always kill you daemon by typing * * killall -9 logparser.php * OR: * killall -9 php * */ // Allowed arguments & their defaults $runmode = array( "no-daemon" => false, "help" => false, "write-initd" => false ); // Scan command line attributes for allowed arguments foreach ($argv as $k=>$arg) { if (substr($arg, 0, 2) == "--" && isset($runmode[substr($arg, 2)])) { $runmode[substr($arg, 2)] = true; } } // Help mode. Shows allowed argumentents and quit directly if ($runmode["help"] == true) { echo "Usage: ".$argv[0]." [runmode]\n"; echo "Available runmodes:\n"; foreach ($runmode as $runmod=>$val) { echo " --".$runmod."\n"; } die(); } // Make it possible to test in source directory // This is for PEAR developers only ini_set('include_path', ini_get('include_path').':..'); // Include Class error_reporting(E_ALL); require_once "System/Daemon.php"; // Setup $options = array( "appName" => "custtemplate", "appDir" => dirname(__FILE__), "appDescription" => "Writes an init.d file based on custom template", "authorName" => "Kevin van Zonneveld", "authorEmail" => "kevin@vanzonneveld.net", "sysMaxExecutionTime" => "0", "sysMaxInputTime" => "0", "sysMemoryLimit" => "1024M", "appRunAsGID" => 1000, "appRunAsUID" => 1000, "runTemplateLocation" => realpath(dirname(__FILE__).'/../data/template_Debian'), ); System_Daemon::setOptions($options); // Overrule the signal handler with any function System_Daemon::setSigHandler(SIGCONT, array("System_Daemon", "defaultSigHandler")); // This program can also be run in the forground with runmode --no-daemon if (!$runmode["no-daemon"]) { // Spawn Daemon System_Daemon::start(); } // With the runmode --write-initd, this program can automatically write a // system startup file called: 'init.d' // This will make sure your daemon will be started on reboot if (!$runmode["write-initd"]) { System_Daemon::log(System_Daemon::LOG_INFO, "not writing ". "an init.d script this time"); } else { if (($initd_location = System_Daemon::writeAutoRun()) === false) { System_Daemon::log(System_Daemon::LOG_NOTICE, "unable to write ". "init.d script"); } elseif ($initd_location === true) { System_Daemon::log(System_Daemon::LOG_INFO, "startup script was already there"); } else { System_Daemon::log(System_Daemon::LOG_INFO, "sucessfully written ". "startup script: ".$initd_location); } } // Run your code // Here comes your own actual code // This variable gives your own code the ability to breakdown the daemon: $runningOkay = true; // This variable keeps track of how many 'runs' or 'loops' your daemon has // done so far. For example purposes, we're quitting on 3. $cnt = 1; // While checks on 3 things in this case: // - That the Daemon Class hasn't reported it's dying // - That your own code has been running Okay // - That we're not executing more than 3 runs while (!System_Daemon::isDying() && $runningOkay && $cnt <=3) { // What mode are we in? $mode = "'".(System_Daemon::isInBackground() ? "" : "non-" ). "daemon' mode"; // Log something using the Daemon class's logging facility // Depending on runmode it will either end up: // - In the /var/log/logparser.log // - On screen (in case we're not a daemon yet) System_Daemon::log(System_Daemon::LOG_INFO, System_Daemon::getOption("appName"). " running in ".$mode." ".$cnt."/3"); // In the actuall logparser program, You could replace 'true' // With e.g. a parseLog('vsftpd') function, and have it return // either true on success, or false on failure. $runningOkay = true; //$runningOkay = parseLog('vsftpd'); // Should your parseLog('vsftpd') return false, then // the daemon is automatically shut down. // An extra log entry would be nice, we're using level 3, // which is critical. // Level 4 would be fatal and shuts down the daemon immediately, // which in this case is handled by the while condition. if (!$runningOkay) { System_Daemon::log(System_Daemon::LOG_ERR, "parseLog() ". "produced an error, ". "so this will be my last run"); } // Relax the system by sleeping for a little bit sleep(2); $cnt++; } // Shut down the daemon nicely // This is ignored if the class is actually running in the foreground System_Daemon::stop();