Login   Register  
PHP Classes
elePHPant
Icontem

File: daemon.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Tim de Koning  >  PHP Cron Daemon  >  daemon.php  >  Download  
File: daemon.php
Role: Application script
Content type: text/plain
Description: Full package file
Class: PHP Cron Daemon
Database driven PHP job scheduler like cron
Author: By
Last change:
Date: 2007-09-21 07:28
Size: 2,240 bytes
 

Contents

Class file image Download
<?php
/**
 *  This file is released under the GPL, any version you like
 * 
 * 
 * PHP CronDaemon v1.0
 * 
 * By Robin Speekenbrink
 * Kingsquare Information Services, 1-10-2007
 * 
 * 
 * 
 * 
 * 
 * Based on the original PHP_FORK class by Luca Mariano
 * This program is free software. You can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License.
 * @author Robin Speekenbrink <info@kingsquare.nl>
 * @version 1.0
 * 
 * I juse ADODB classes from www.phplens.com/adodb but for clearity reasons i use the db_functions from this file.
 * Changing to another DB shouldn't pose any problems.
 */

require './lib/miniDb.php';
require 
'./lib/phpFork.php';
require 
'./lib/worker.php';
require 
'./lib/cron/tab.php';
require 
'./lib/cron/daemon.php';
require 
'./lib/cron/job.php';
require 
'./lib/cron/parser.php';

$db null;
$fp $debug false;

define ('MAX_WORKERS',        15);
define ('MAX_IDLE',            180);
define ('SLEEP_INTERVAL',    10);
define ('FS_START',            dirname(__FILE__).'/');
define ('FS_LOG',            FS_START.'log/cron.log');
define ('FS_KILL',            FS_START.'kill/daemon');
define ('DB_HOST',            'localhost');
define ('DB_USER',            'cronUser');
define ('DB_PASS',            'example');
define ('DB_NAME',            'crontab');
define ('TABLE_CRONTAB',    'crontab');
define ('TABLE_CRONJOB',    'cronJob');

/**
 * A central function for each sub process to create a new instance of the DB handle.
 * My version uses ADODB
 *
 * @return miniDb
 */
function newDb() {
    
$db = & new mysqldb();
    
$db->pconnect(DB_HOSTDB_USERDB_PASSDB_NAME);
    return 
$db;
}

/**
 * Write the data to the specified log file
 *
 * @param string $data
 */
function writeLog($data '') {
    global 
$fp;
    if (empty(
$data)) return;
    if (!
$fp)  $fp fopen(FS_LOG'a+');
    
$data date('d-m-Y H:i:s')."\r\n".$data;
    
fputs($fp$datastrlen($data));
    
fputs($fp"\r\n----\r\n");
    if (
$debug) print $data;
}
       
$controller = new cronDaemon('cronDaemon'SLEEP_INTERVALMAX_IDLE);
$controller->start();
writeLog('starting deamon: '.$controller->getName().' ('.$controller->getPid().')');
?>