Esempio n. 1
0
 /**
  * 设置锁.
  * 
  * @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;
 }
Esempio n. 2
0
 /**
  * 打印致命错误信息.
  *
  * @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();
     }
 }