Вы не зашли.
#1001.
AND
Off
(11)
Участник
2013.05.15 10:10
TLENS, подойдет функция trigger_error с флагом E_USER_NOTICE ?
Опоздал)
Отредактировано AND (2013.05.15 10:10)
Спасибо, пригодится. Написал уже крокодила что бы вел логи) Может понадобится.
Код:
span style="color: #0000BB"><?php//include_once ROOT . '/' . SYSTEM . '/function.php'; // Вспомогательные функцииfunction is__writable($path) {//will work in despite of Windows ACLs bug//NOTE: use a trailing slash for folders!!!//see http://bugs.php.net/bug.php?id=27609//see http://bugs.php.net/bug.php?id=30931 if ($path{strlen($path)-1}=='/') // recursively return a temporary file path return is__writable($path.uniqid(mt_rand()).'.tmp'); else if (is_dir($path)) return is__writable($path.'/'.uniqid(mt_rand()).'.tmp'); // check tmp file for read/write capabilities $rm = file_exists($path); $f = @fopen($path, 'a'); if ($f===false) return false; fclose($f); if (!$rm) unlink($path); return true;}class MyException extends Exception { }/* * @name Log * @date 14.05.2013 * @author TLENS */class Log { static private $openLogFile = array(); static private $error = null; static private $log = null; static private $localPath = "Log"; private $logName; private $logData = array(); private $logDir; private $logFileName; private $logFullPath; private $display = false; static public function &init ($name, $mess = null) { if (!isset(Log::$openLogFile[$name])) { Log::$openLogFile[$name] = new Log($name); } Log::$openLogFile[$name]->addMessage($mess); return Log::$openLogFile[$name]; } private function __construct($logName, $display = false) { $this->logName = $logName; $this->display = $display; $this->logFileName = "$this->logName.log"; $this->logDir = ROOT . '/' . DATA . '/' . Log::$localPath . ''; $this->logFullPath = "$this->logDir/$this->logFileName"; if (!file_exists($this->logFullPath)) { $this->addMessage("Created log-file $this->logName"); } } public function __destruct() { //var_dump($this); if (sizeof($this->logData) === 0) { return; } if (!is_dir($this->logDir)) { throw new MyException("Dir '$this->logDir' not found! Plese create this dir."); return; } if (!is__writable($this->logDir)) { throw new MyException("Dir '$this->logDir' puts permission denied! Plese config cmod this dir."); return; } if (file_exists($this->logFullPath) && !is_writable($this->logFullPath)) { throw new MyException("File '$this->logFullPath' fputs permission denied! Plese config this file."); } if (!($fp = fopen($this->logFullPath, 'a'))) { throw new MyException("Falied to open $this->logFullPath!"); } foreach ($this->logData as $log) { $date = date("Y/m/d h:i:s", $log['time']); fputs($fp, "$date [$this->logName]: {$log['mess']}\n"); } fclose($fp); } public function addMessage($mess) { if (!$mess) return; $mess = str_replace("\n", "\n\t", $mess); $this->logData[] = array('time' => time(), 'mess' => $mess); } static public function error($message) { if (!$message) return; if (!Log::$error) { Log::$error = new Log("Error"); } Log::$log->addMessage($message); } static public function log($message) { if (!$message) return; if (!Log::$log) { Log::$log = new Log("log"); } Log::$log->addMessage($message); }}?> |
Может можно было это все реализовать в классе MyException но я же не китаец что бы все упрощать)
TLENS, сейчас стандарт де факто в php логгерах - это
Monolog.
Есть ли в php расширение какое то для взаимодействия с программами через через fcgi?
TLENS, по идее самому через сокеты можно сделать. Хотя хз, слишком специфичная задача, не сталкивался сам.
Попробую сам написать но уже тесно связанную со своей задачей. меня больше привлекает непрерывное соединение
tipsun, ты бы просто конкретнее написал что не понятно. а то хз что из этого кода описывать
привет, как можно определить на каких сайтах стоит граббер на мой сайт?
вед в статистике опредиляется только ip
Нельзя вернуться в прошлое и изменить свой старт,
но можно стартовать сейчас и изменить свой финиш.