Exemple #1
0
function doTest()
{
    global $HOST;
    global $TOTAL;
    global $HREFS;
    global $REQUESTS_CNT;
    $RESULTS = array();
    $j = 0;
    foreach ($HREFS as $href => $name) {
        ++$j;
        $href = ensure_starts_with($href, '/');
        $path = "http://{$HOST}{$href}";
        $sec = Secundomer::inst();
        for ($index = 0; $index <= $REQUESTS_CNT; $index++) {
            if ($index == 0) {
                //Пропустим первый вызов, на случай кеширования
                file_get_contents($path);
                continue;
            }
            $sec->start();
            file_get_contents($path);
            $sec->stop();
            ++$TOTAL;
        }
        dolog(pad_zero_left($j, 2) . '/' . count($HREFS) . " [{$path}] - " . $sec->getAverage() . ' (' . $sec->getTotalTime() . '/' . $sec->getCount() . ')');
        $RESULTS[$path] = str_replace('.', ',', round($sec->getAverage(), 2));
    }
    asort($RESULTS, SORT_DESC);
    $RESULTS = array_reverse($RESULTS, true);
    return $RESULTS;
}
Exemple #2
0
 /**
  * Href-ссылка для отображения содержимого элемента с id=$boxId.
  * 
  * @param type $extractor - название javascript-класса, занимающегося извлеченеим данных из элемента с id=$boxId
  * 
  * <a class="ps-bubblehref-move" data-extractor="theorem" href="#post-tr-vectors-thkoll">№1</a>
  */
 public static function aById($boxId, $content, $extractor = null, array $attrs = array(), $blank = false)
 {
     self::attrsExtractor($attrs, $boxId, $extractor);
     if (!array_key_exists('href', $attrs)) {
         //Не передана ссылка, подставим в качестве якоря код элемента.
         $blank = false;
         $attrs['href'] = ensure_starts_with($boxId, '#');
     }
     return PsHtml::a($attrs, $content, $blank);
 }
Exemple #3
0
 /** @return DirItem */
 public static function inst($path, $name = null, $ext = null)
 {
     $itemPath = normalize_path(file_path($path, $name, $ext));
     $corePath = normalize_path(PATH_BASE_DIR);
     //Обезопасим пути, в которых есть русские буквы
     try {
         $itemPath = iconv('UTF-8', 'cp1251', $itemPath);
     } catch (Exception $e) {
         //Если произойдёт ошибка - игнорируем
     }
     $isAbs = starts_with($itemPath, $corePath);
     $absPath = $isAbs ? $itemPath : next_level_dir($corePath, $itemPath);
     if (array_key_exists($absPath, self::$items)) {
         return self::$items[$absPath];
     }
     $relPath = cut_string_start($absPath, $corePath);
     $relPath = ensure_starts_with($relPath, DIR_SEPARATOR);
     return self::$items[$absPath] = new DirItem($relPath, $absPath);
 }
Exemple #4
0
/**
 * Проверяет, имеет ли файл заданное расширение.
 * Если нет - добавляет его.
 */
function ensure_file_ext($file, $ext)
{
    $file = normalize_path($file);
    if (!$file || ends_with($file, DIR_SEPARATOR)) {
        return $file;
    }
    $ext = trim($ext);
    if (!$ext || $ext == '.') {
        return $file;
    }
    $file = cut_string_end($file, '.');
    $ext = ensure_starts_with($ext, '.');
    return ends_with($file, $ext) ? $file : $file . $ext;
}
 /**
  * Сохраняет значение для вставки его в запрос
  */
 public function safe4insert($val)
 {
     if ($this->isFk()) {
         if (is_string($val) && contains_substring($val, 'select')) {
             return ensure_ends_with(ensure_starts_with($val, '('), ')');
         }
         return is_numeric($val) ? 1 * $val : null;
     }
     switch ($this->getType()) {
         case self::TYPE_BIT:
         case self::TYPE_INT:
         case self::TYPE_INT_DATE:
             return is_numeric($val) ? 1 * $val : 'null';
         case self::TYPE_CHAR:
         case self::TYPE_STRING:
         case self::TYPE_STRING_DATE:
         case self::TYPE_TEXT:
             //MySQL различает пустую строку и null. Если столбец nullable и значение пустое - вставим null
             //Обязательно нужно выполнить mysql_real_escape_string, чтобы безопасно вставить значение
             return $this->isNullable() && !$val ? 'null' : "'" . mysql_real_escape_string($val) . "'";
     }
 }
Exemple #6
0
 /**
  * Метод к URL добавляет параметры и якорь
  * 
  * @param str $base - базовый URL
  * @param array|str $params - строка параметров
  * @param str $sub - якорь
  * @return str
  */
 public static function addParams($base, $params, $sub = null)
 {
     $base = trim($base);
     $params = self::getParamsToString($params);
     $delimiter = $base && $params ? contains_substring($base, '?') ? ends_with($base, '?') ? '' : '&' : '?' : '';
     $sub = $sub ? ensure_starts_with($sub, '#') : '';
     return $base . $delimiter . $params . $sub;
 }