/** * 设置锁. * * @access private * @param integer $lockType 锁类型, LOCK_SH(读), LOCK_EX(写), LOCK_UN. * @return boolean 成功返回 TRUE; 否则返回 FALSE. */ private function _lock($lockType) { $opts = $this->configs['lock']; // 锁配置项. list($isLock, $times, $timeout) = $opts; // 未启用锁直接返回 TRUE. if (FALSE === $isLock) { return TRUE; } // 文件句柄无效, 记录日志. if (NULL === $this->_handle) { Log::record('获取文件缓存的锁时出错(无效的文件句柄).'); return FALSE; } $flag = FALSE; // 获取锁成功标记. for ($i = 0; $i < $times; ++$i) { if (flock($this->_handle, $lockType)) { $flag = TRUE; break; } usleep($timeout); // 暂停获取锁. } return $flag; }
/** * 打印致命错误信息. * * @access private * @return void */ private static function displayFatalError() { $lastError = error_get_last(); $strErr = ''; if (NULL !== $lastError) { $strErr .= "<b>Fatal error: </b> "; $strErr .= $lastError['message']; $strErr .= ' in <b>' . $lastError['file'] . '</b> '; $strErr .= ' on line <b>' . $lastError['line'] . '</b>'; } if (WY_DEBUG) { if (!empty($strErr)) { echo '<pre>', nl2br($strErr), '</pre>'; } } elseif (Config::get('enable_log')) { Log::record(strip_tags($strErr)); // 将错误日志写入文件. Log::save(); } }