Я не могу придумать как хранить статистику посещаемости Хосты - Хиты.
С учётом что на счётчике нужно отрисовывать хосты за сегодня, вчера и за всё время
<?php
define('QUERY_TABLE_PREFIX', 'prefix_');
define('QUERY_TABLE_ENTITYES', 'entity');
define('QUERY_GET_ENTITY_BY_ID',
'SELECT `id` AS id, `name` AS name, `origin` AS domain, `token` AS token ' .
'FROM ' . QUERY_TABLE_PREFIX . QUERY_TABLE_ENTITYES . ' ' .
'WHERE `id`=?i LIMIT 1'
);
class Query
{
const TABLE_PREFIX = QUERY_TABLE_PREFIX;
const TABLE_ENTITYES = QUERY_TABLE_ENTITYES;
const GET_ENTITY_BY_ID = QUERY_GET_ENTITY_BY_ID;
}
$queryString = Query::GET_ENTITY_BY_ID;
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
ExpiresByType text/cache-manifest "access plus 0 seconds"
<FilesMatch \.(html|xhtml|xml|shtml|phtml|php|txt)$>
ExpiresDefault "access plus 0 seconds"
</FilesMatch>
ExpiresByType text/html "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/rss+xml "access plus 1 hour"
ExpiresByType application/atom+xml "access plus 1 hour"
<FilesMatch \.(ico)$>
ExpiresDefault "access plus 1 week"
</FilesMatch>
ExpiresByType image/x-icon "access plus 1 week"
<FilesMatch \.(gif|png|jpg|jpeg|ogg|mp4|mkv|flv|swf|wmv|asf|asx|wma|wax|wmx|wm)$>
ExpiresDefault "access plus 1 year"
</FilesMatch>
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
ExpiresByType text/x-component "access plus 1 month"
<FilesMatch \.(eot|ttf|otf|svg|woff)$>
ExpiresDefault "access plus 1 year"
</FilesMatch>
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
<FilesMatch \.(css|js)$>
ExpiresDefault "access plus 1 year"
</FilesMatch>
ExpiresByType text/css "access plus 1 year"
ExpiresByType application/javascript "access plus 1 year"
</IfModule>
Есть идея сделать выборку из этих таблиц сразу в начале функции и в цикле обращаться к ассоциативным массивам.
<?php
define('SECRET', 'tostersecretcode2015');
/**
* Создаёт серийный номер с заданной проверочной частью.
*
* @param string $check Часть серийного номера, используемая для проверки.
*
* @return bool
*/
function sernum ($check = null)
{
$template = 'XXX99-XXX99-99XXX-99XXX';
$parts = explode('-', $template, 2);
if (!isset($check)) {
$check = '';
for ($i = 0; $i < strlen($parts[0]); $i++) {
switch ($parts[0][$i]) {
case 'X': $check .= chr(rand(65, 90)); break;
case '9': $check .= strval(rand(0,9)); break;
}
}
}
$sernum = $check . '-';
$hash = hash('sha256', $check . SECRET);
for ($i = 0; $i < strlen($parts[1]); $i++) {
switch ($parts[1][$i]) {
case 'X': $sernum .= chr(65 + ord($hash[$i]) % 26); break;
case '9': $sernum .= strval(ord($hash[$i]) % 10); break;
case '-': $sernum .= '-'; break;
}
}
return $sernum;
}
/**
* Проверяет серийный номер.
*
* @return bool
*/
function check_sernum ($sernum)
{
$parts = explode('-', $sernum, 2);
return (sernum($parts[0]) === $sernum);
}
echo '<pre>Десять случайных номеров:<br>';
for ($i = 0; $i < 10; $i++)
echo sernum(), '<br/>';
if (check_sernum('XCC58-AYA68-75ZUU-19TDZ')) {
echo 'Номер XCC58-AYA68-75ZUU-19TDZ прошёл проверку<br>';
}
if (!check_sernum('ESJ18-TBZ25-42XDX-38XWY')) {
echo 'Номер ESJ18-TBZ25-42XDX-38XWY не прошёл проверку<br>';
}
var str = 'тест тост тест тесто';
var words = str.split(' ');
var result = [];
for (var i = 0; i < words.length; i++) {
result.push(words[i]);
for (var j = i + 1; j < words.length; j++) {
if (levenshtein(words[i], words[j], {}) < 2) {
words.splice(j--, 1);
}
}
}
.sidebar
width 260px
height calc(100% - 65px)
border-right 2px solid $border-color
background-color #EFF4F7
.sidebar-item
border-bottom 1px solid $border-color
a
display inline-block
width 100%
padding 14px 25px
i
margin-right 12px
&:hover
background-color white
&:first-child
border-top 1px solid $border-color
Сам еще не до конца разбираюсь, но, помоему, это сильно сказывается на скорости загрузки?
Такие ф-ции созданы для того, чтобы отслеживать скорость запросов.
В homesite я мог добавить свои ф-ции и они выделялись не как ф-ции а как mysql a-ции.
Грубо говоря, мне нужно сделать так, чтоб определенная ф-ция, например my_query() выделялась не так, как все другие ф-ции а как-то иначе, например жирным. Как-то так.
Имея свои ф-ции можно делать много разных полезных дел. Записывать ошибки при выборках и т.д. Я уже давно не пользуюсь напряму mysql_query заменив их на свои ф-ции.
Можно конечно как-то наговнокодить, пытаться сгенерировать регулярку, потом ее подставлять, но интересует красивый и быстрый способ
$mask = 'X-XX-XX-XXXXX';
$test = '7-Ds-re-SD434';
$pattern = preg_replace_callback('/X+/', function ($m) {
return '[^-]{' . strlen($m[0]) . '}';
}, preg_quote($mask));
if (preg_match("/^{$pattern}$/", $test)) {
echo "Строка '$test' подходит под маску '$mask'";
}
$mask = 'X-XX-XX-XXXXX';
$test = '7-Ds-re-SD434';
if (preg_replace('/[^-]/', 'X', $test) == $mask) {
echo "Строка '$test' подходит под маску '$mask'";
}