container.php
来自「视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.」· PHP 代码 · 共 278 行
PHP
278 行
<?php/* vim: set expandtab tabstop=4 shiftwidth=4: */// +----------------------------------------------------------------------+// | PEAR :: Mail :: Queue :: Container |// +----------------------------------------------------------------------+// | Copyright (c) 1997-2004 The PHP Group |// +----------------------------------------------------------------------+// | This source file is subject to version 3.0 of the PHP license, |// | that is bundled with this package in the file LICENSE, and is |// | available at through the world-wide-web at |// | http://www.php.net/license/3_0.txt. |// | If you did not receive a copy of the PHP license and are unable to |// | obtain it through the world-wide-web, please send a note to |// | license@php.net so we can mail you a copy immediately. |// +----------------------------------------------------------------------+// | Authors: Radek Maciaszek <wodzu@tonet.pl> |// | Lorenzo Alberton <l dot alberton at quipo dot it> |// +----------------------------------------------------------------------+//// $Id: Container.php,v 1.8 2004/07/18 14:59:15 quipo Exp $/** * File Container.php * * @package Mail_Queue */require_once 'Mail/Queue/Body.php';/** * Mail_Queue_Container - base class for MTA queue. * Define methods for all storage containers. * * @version $Revision: 1.8 $ * @author Radek Maciaszek <chief@php.net> * @author Lorenzo Alberton <l dot alberton at quipo dot it> * @package Mail_Queue * @access public * @abstract */class Mail_Queue_Container{ // {{{ class vars /** * Array for mails in queue * * @var array */ var $queue_data = array(); /** * Key for current mail in queue * * @var integer * @access private */ var $_current_item = 0; /** * Key for last mail in queue * * @var integer * @access private */ var $_last_item = 0; /** * Options */ var $limit; var $offset; var $try; var $force_preload; var $buffer_size = 10; //number of mails in the queue /** * Pear error mode (see PEAR doc) * * @var int $pearErrorMode * @access private */ var $pearErrorMode = PEAR_ERROR_RETURN; // }}} // {{{ get() /** * Get next mail from queue. When exclude first time preload all queue * * @return mixed MailBody object on success else Mail_Queue_Error * @access public */ function get() { if (Mail_Queue::isError($err = $this->preload())) { return $err; } if (empty($this->queue_data)) { return false; } if (!isset($this->queue_data[$this->_current_item])) { //unlikely... return new Mail_Queue_Error(MAILQUEUE_ERROR_CANNOT_INITIALIZE, $this->pearErrorMode, E_USER_ERROR, __FILE__, __LINE__, 'No item: '.$this->_current_item.' in queue!'); } $object = $this->queue_data[$this->_current_item]; unset($this->queue_data[$this->_current_item]); $this->_current_item++; return $object; } // }}} // {{{ put() /** * Put new mail in queue. * * Mail_Queue_Container::put() * * @param string $time_to_send When mail have to be send * @param integer $id_user Sender id * @param string $ip Sender ip * @param string $from Sender e-mail * @param string $to Reciepient e-mail * @param string $hdrs Mail headers (in RFC) * @param string $body Mail body (in RFC) * @return bool True on success * @access public **//* function put($time_to_send, $id_user, $ip, $from, $to, $hdrs, $body, $delete_after_send) { $this->_last_item = count($this->queue_data); $this->queue_data[$this->_last_item] = new Mail_Queue_Body($id, date("d-m-y G:i:s"), $time_to_send, null, $id_user, $ip, $sender, $recipient, unserialize($headers), unserialize($body), $delete_after_send, 0); return true; }*/ // }}} // {{{ setOption() /** * Set common option * * Mail_Queue_Container::setOption() * * @param integer $limit Optional - Number of mails loaded to queue * @param integer $offset Optional - You could also specify offset * @param integer $try Optional - how many times should system try sent * each mail * @param boolean $force_preload Optional - FIXME * @return void * * @access public **/ function setOption($limit = MAILQUEUE_ALL, $offset = MAILQUEUE_START, $try = MAILQUEUE_TRY, $force_preload = false) { $this->limit = $limit; $this->offset = $offset; $this->try = $try; $this->force_preload = $force_preload; } // }}} // {{{ countSend() /** * Check how many times mail was sent. * * @param object MailBody * @return mixed Integer or false if error. * @access public */ function countSend($mail) { return false; } // }}} // {{{ setAsSent() /** * Set mail as already sent. * * @param object MailBody object * @return bool * @access public */ function setAsSent($mail) { return false; } // }}} // {{{ getMailById() /** * Return mail by id $id (bypass mail_queue) * * @param integer $id Mail ID * @return mixed Mail object or false on error. * @access public */ function getMailById($id) { return false; } // }}} // {{{ deleteMail() /** * Remove from queue mail with $id identifier. * * @param integer $id Mail ID * @return bool True on success ale false. * @access public */ function deleteMail($id) { return false; } // }}} // {{{ preload() /** * Preload mail to queue. * The buffer size can be set in the options. * * @return mixed True on success else Mail_Queue_Error object. * @access private */ function preload() { if (!empty($this->queue_data)) { return true; } if (!$this->limit) { return true; //limit reached } $bkp_limit = $this->limit; //set buffer size if ($bkp_limit == MAILQUEUE_ALL) { $this->limit = $this->buffer_size; } else { $this->limit = min($this->buffer_size, $this->limit); } if (Mail_Queue::isError($err = $this->_preload())) { return $err; } //restore limit if ($bkp_limit == MAILQUEUE_ALL) { $this->limit = MAILQUEUE_ALL; } else { $this->limit = $bkp_limit - count($this->queue_data); } //set buffer pointers $this->_current_item = 0; $this->_last_item = count($this->queue_data)-1; return true; } // }}}}?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?