Mr.KTO blog

PHP  →  Как определить, что сайт использует 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

my php scripts  →  QRL (Quick URL) class

15 июня 2007

Небольшая презентация моего класса для работы с HTTP.

require_once("inc/qrl.php");
$req = new qrl;
print $req->submit_request("http://www.google.com/") or exit("Ошибка");

Далее »

PHP  →  Формат конфигурационных файлов

28 мая 2007

Здесь речь пойдёт о пользовательских конфигурационных файлах. То есть файлах, где хранятся настройки текущего проекта, которые скрипт тем или иным образом извлекает и использует, а администратор системы может изменять. Сегодня мы сравним типы конфигов и узнаем какой для чего использовать лучше.

Сначала то, о чём все знают, потом – мой способ хранения конфигов!

  1. Использование PHP
    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;
    

    Преимущества:

    • К константам/переменным можно обратится сразу по имени.
    • Быстрота получения данных из конфига (т.к. обрабатывается обычный код PHP)

    Недостатки:

    Далее »

Другие  →  Боты важнее людей?!

25 мая 2007

Бывает, ищешь в поисковых системах что-нибудь. Вот перед тобой нужная ссылка, под ней выдержка из текста странички - ты нашёл, что искал. Каково же твоё удивление, когда при переходе на сайт обнаруживается, что требуется регистрация для просмотра содержимого.

Но бывает хуже - надпись на сайте гласит, что доступ к данной страничке доступен только для друзей блогера, или для сообщества. А на форумах - что "регистация завершена", т.к. "набрано достаточно пользователей", или веб2.0-евское "регистрация доступна только по приглашениям".

Далее »

my php scripts  →  Google Page Rank Checker

18 мая 2007

Сделал класс для определения Google PageRank.

http://dev.mrkto.com/pagerank/

Google PageRank Checker

Скрипт иммитирует работу Google Toolbar для FireFox-а.

URL можно вводить без http://, можно проверить PageRank отдельной странички.
Если page rank для данной странички не существует - вернёт false (здесь - прочерк)

Проверку Яндекс тИЦ вроде реализовать проще - там нет "устрашающего хэша", но пока что на меня никто не ссылается - подождём.

Далее »

my php scripts  →  Прогноз погоды

8 мая 2007

Один из моих проектов, страничка с подробной информацией о погоде:

Screenshot

PHP  →  Многопоточность в php

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. Зачем использовать классы вместо функций.

Синонимайзер на PHP – достаточно одной строчки

Страница 11 из 12«123456789101112»