Мысли вслух
26 октября 2007
PHP 5 мне напоминает Windows Vist'у – следование стандартам, следование моде.
Но ничего принципиально нового (кроме, разве что, новых багов).
26 октября 2007
PHP 5 мне напоминает Windows Vist'у – следование стандартам, следование моде.
Но ничего принципиально нового (кроме, разве что, новых багов).
28 сентября 2007
Вот один из случаев... которых не было.
Из их файлов... которых нет.
©MenInBlack2
Об этом не пишут в блогах, не обсуждают на форумах, но если вы не сталкивались с проблемами при написании постов с исходным PHP-кодом, или блоками AdSense, то я чего-то не понимаю (объясните тогда).
В старых версия багов только больше.
Для переноса постов и темы из старой версии надо было сделать бэкап:
Наверное, вы заметили, что кавычки даже в <pre></pre> (даже если заменить " на ") получаются вот такие: «» (эти я просто скопировал через буфер обмена, можно также: « »). То есть, если кто-то решит использовать пример вашего кода - его ожидают обломы.
Здесь без хака файлов вордпреса не обойтись. Редактируем:
/wp-includes/formatting.php - закомментировать следующее так:
if (isset($curl{0}) && '<' != $curl{0} && $next) { // If it's not a tag
// static strings
// $curl = str_replace($static_characters, $static_replacements, $curl);
// regular expressions
// $curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);
...
...
function convert_smilies($text) {
...
// $content = preg_replace($wp_smiliessearch, $wp_smiliesreplace, $content);
Форматирование блоков <pre> можно настроить, редактируя файл *.css темы.
Для данной темы - из админки: Внешний вид / Редактор Тем / Список стилей - добавляем: (UPDATE: Добавлены строки для переноса текста внутри <pre>. Спасибо T. Longren.)
pre {
color: #0000CD;
border-left: 1px solid #0000CD;
padding-left: 8px;
font-size: 12px;
white-space: pre-wrap; /* css-3 */
white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
}
27 сентября 2007
Здесь:
«HTTP-аутентификация в PHP возможна только при запуске РНР как Apache-модуля» - так написано в документации по PHP.
Итак, если в <apache_dir>/conf/httpd.conf включён модуль Mod_Rewrite (LoadModule...),
то создаём файл .htaccess в папке сайта и добавляем следующие строки:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP:Authorization} !^$
RewriteRule ^file\.php$ file.php?HTTP_AUTH=%{HTTP:Authorization} [QSA,L]
</IfModule>
Первая строка (Options) может быть не нужна в зависимости от настроек хостинга.
Далее - мы проверяем, что есть непустой хидер Authorization и при запросе к file.php добавляем к нему GET-параметр HTTP_AUTH, при этом сохраняя другие параметры (QSA).
P.S: Также можно установить переменную окружения (environment valiable):
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTH:%{HTTP:Authorization},L]
Она будет доступна через $_SERVER['HTTP_AUTH'], но скорее всего $_SERVER['REDIRECT_HTTP_AUTH'] - этот префикс добавляет апач.
Ещё информация об этом способе: http://joseph.randomnetworks.com/archives/...
После этого надо добавить в начало file.php:
if (isset($_GET['HTTP_AUTH'])) {
preg_match('/^Basic\s+(.*)$/i', $_GET['HTTP_AUTH'], $mHA) or exit("Not supported HTTP_AUTH");
list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = split(":", base64_decode($mHA[1]));
}
Теперь пример из документации по php будет работать!
17 июня 2007
1. Посмотреть на расширение странички (.php) Это банально. А в документации по PHP советуют менять расширение для безопасности.
2. Давно искал этот способ. Если к любому php-сценарию добавить один параметр, то вы получите забавную картинку:
?=PHPE9568F36-D428-11d2-A769-00AA001ACF42 (пример)
PHP Credits можно посмотреть, используя ?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000
?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 и
?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 -
- это логотипы PHP и Zend из phpinfo()
3. Ну и наконец, самый интересный способ - это посмотреть хидеры, которые отдаёт страничка на php (а также сервер).
Сделать это можно, например так:
Чтобы не палить версию PHP и то, что он установлен - достаточно в php.ini опцию expose_php изменить на Off
28 мая 2007
Здесь речь пойдёт о пользовательских конфигурационных файлах. То есть файлах, где хранятся настройки текущего проекта, которые скрипт тем или иным образом извлекает и использует, а администратор системы может изменять. Сегодня мы сравним типы конфигов и узнаем какой для чего использовать лучше.
config.inc
<?php
define("DB_HOST", "localhost");
# также здесь возможны комментарии
$sitehost = "www.site.com";
$cfg['session_len'] = 30*60*60; // можно использовать результат вычислений
?>
использование:
require("conf/config.inc");
echo $sitehost;
echo $cfg['session_len'];
echo DB_HOST;
Преимущества:
Недостатки:
24 апреля 2007
Наконец-то реализовал мультипоточность при работе с сокетами.
Выигрыш примерно в 2 раза с быстрыми серверами, соответственно, если сервер медленный, или контент генерируется на лету (напр. flush()), то грузится будет ещё быстрее.
Последний тест:
Дано: нужно загрузить 500 страниц. Проблема в том, что каждая генерируется на чужом сервере и время загрузки каждой примерно 20 сек. Т.е., если загружать все в цикле, то уйдёт около 3-х часов.
Используя многопоточность при 20 одновременных потоках все странички загрузились за 25 минут (<3сек./страница).
При 40 потоках - за 20 минут. В общем прогресс налицо.
Совместимо с php4, позволяет добавлять задачи на лету, используя callback-функцию (onload)
Пример кода, использующего мой класс multi_qrl:
$multi = new multi_qrl;
$multi->max_threads = 20;
$multi->onload = "req_load";
function req_load(&$multi, &$req, $result)
{
echo $req->URL." ".(($result!==false)?"ok":"fail")."\r\n"; flush();
}
$multi->add_request(new qrl, "http://www.yandex.ru/");
$multi->add_request(new qrl, "http://www.rambler.ru/");
$multi->add_request(new qrl, "http://www.google.ru/");
$multi->add_request(new qrl, "http://www.yahoo.com/");
$multi->add_request(new qrl, "http://www.sellme.ru/");
$multi->add_request(new qrl, "http://www.habr.ru/");
$multi->add_request(new qrl, "http://www.moneynews.ru/");
$multi->run();
Класс распостраняется только с моими разработками. Стоимость проектов от $50.
_________________
Для тех, кто не подписался по RSS:
Когда переходить на ООП? I. Зачем использовать классы вместо функций.
2 марта 2007
В интернете много споров по поводу того, где лучше редактировать PHP-скрипты.
У меня есть отличное предложение.
В стиле linux, можно даже использовать на удалённой windows-машине через консоль.
В любом случае, гораздо лучше notepad.exe
(Win+R / cmd / edit file.php)
__________________
Шутки шутками (правда в комментариях).
Интересно – как определить, что сайт использует PHP.
Или как писать посты о PHP в WordPress.
Знаете что такое RSS-подписка? Чего же Вы тогда ждёте: feeds.feedburner.com/mrkto.
Использование материалов сайта возможно только при указании ссылки на источник.
Copyright © 2007 mrkto.com