Referring Links.com – Добавено кеширане

13.12.2008 от Васил Тошков
Категории: Програмиране 

Referring Links скриптът взе доста да товари хостинга, затова се принудих да добавя кеширане на изходните резултати. Задачата изобщо не беше лесна, защото кеширането не е стандартно, а трябваше да се кешират JavaScript файлове. Просто ситуацията не е много обичайна.

Както и да е – справих се някак си, въпреки че съм нов в PHP и главата ми още е омотана с някои други видове езици и стандарти. Базата данни на скрипта надмина 140,000 записа в най-голямата си таблица. Там се съхраняват IP-адресите на всички реферали през последните 30 дни.

Според мен проблемът в натоварването е именно заявката, която извлича и групира резултатите. По репортите от host bulgaria не може много да се разбере къде точно е проблемът, защото срещу SQL ми пише натоварване 0.0, а при мен друго, освен сложната заявка, не товари.

Сега всеки сайт си има JavaScript файл с рефералните му сайтове и посещенията от тях. Този файл се обновява веднъж на ден и се вика само той. Базата данни също се чисти веднъж да ден от стари данни. Това са реферали преди 30 и повече дни. Така системата прави заявки само при отчитане на нов реферал.

Тези заявки само добавят информация и са бързи. При подобни кеширания, обаче, има един момент в сигурността, който много често се отминава. Кашираният файл обикновено се отваря с PHP функцията fopen(). Налага ни се програма от вида: $handle = fopen(„path/to{$_GET['filename']}.html“, „r“);

Ако променливата ‘filename’ е замърсена, един нарушител може да обходи файловата система с вкарване на низове от рода: „../../../../another/path/to/file%00„. Днес не се бях сетил за това, а е много опасно. В последствие подсигурих с регулярен израз валидността на входните данни при подобен вид отваряния на файлове.

Сега остава да се оглеждам за бъгове след последните промени. До сега скриптът не е спирал да работи, въпреки коренните си промени, вече на няколко пъти и натоварването. Дано и за в бъдеще не се случват проблеми, които да наложат спирането му. Днес ограничих заявките към базата с около 100,000 на ден :)

бутон за споделяне в социални мрежи

Коментари

5 коментара за Referring Links.com – Добавено кеширане

  1. NullSoFt на 14.12.2008 20:27

    Мисля че ще е добре ако правиш архив на всичките рефери.

    Примерно в сайта кадето ползвам scripta да се виждат както сиго направил, но след като вляза в http://referringlinks.com/stats/adtechreklamr10netseo.com да мога да вида статистиката по месеци и години.

    По тоя начин не мисля че ще товари много.

  2. Васил Тошков на 15.12.2008 16:52

    Интересна идея. Мога да пазя примерно последната година и от нея всеки месец да се пазят ТОП10 реферала за всеки потребител и посещенията.

    Мисля сега на първо време да вкарам малко SEO-то в играта и да генерира списък на ТОП10 ключовите думи, по които ти се влиза от търсачките.

    Като за начало ще парствам адреси само от Google, после ще добавям търсачки Yahoo, MSN Live, Yandex, Jabse т.н. Ще е много полезно.

  3. бг турист на 17.12.2008 14:06

    защо ползваш fopen, а не директно include на кеширания файл? щото е за предпочитане по принцип…
    някаква допълнителна обработка ли му правиш?

  4. Васил Тошков на 17.12.2008 15:05

    Нали съм по оптимизациите – не кеширам целия JavaScript, а само част от него. Така накрая да вмъкна кеша в друг, главен файл. Ако използвам include, ще се пренасочи потокът и ще се отвори само каширания файл. Аз не искам това да става.

    Така, чрез кеширане само на най-важното, е по-прегледен кода и кешовете са по-малки.

  5. NullSoFt на 30.12.2008 23:53

    Преди малко се сетих за нещо за твоето проектче.

    Значи става дума за.
    Нали показва от кой сайт колко рефера имаме няма ли възможност след като натиснем на името на рефера да се отвори примерно.

    http://referringlinks.com/stats/adtechreklamr10netseo.com/домаин.ком, и от тук да видим точния адрес на реферал адреса, примерно от гугъл да се виждат търсените ключови думу? нали се сешташ нещо като тиксото.