Debian OpenLogo

Eräänä päivänä ystäväni kirjoitti minulle, että minulla oli ongelma Debian -palvelin. Ei aivan hoidettu yli sessiite 30 Ei ole väliä kuinka monta minuuttia perustaa Session.gc_maxlifetime. Periaatteessa ongelma on, että Debian on päättänyt uudelleen kirjoittaa istuntojen toiminta sen sijaan roskienkerääjä-ja käynnistetään yksi cron joka 9 minuuttia joka siivoaa vanhoja istuntoja. Hän on in/etc/cron.d/php5

kaiken kaikkiaan sempličk skripti, joka puolestaan käynnistää/usr/lib/php5/maxlifetime ja muuttuva kauanko on evästeen, jota elämä 1440 sekuntia tai 24 Tästä lähtien siellä on 😉 2 vaihtoehtoja tai voit lopettaa kruunu ja siten lopettaa Automaattinen puhdistus, jotka voivat myöhemmin uudelleensuuntaus php ini tai suoraan script muuttaa elämä pitkäikäisyys istuntojen muuttuva max. Itse mieluummin toinen vaihtoehto. Aika siisti on yleinen, mutta haitta – Jos korvaat tiedoston muutokset menetetään mikä on hankala se.

PS. Nyt, kun ajattelen luultavasti, jos määritellään jossain muualla jos tallentaa php info kautta seiinata pitäisi mennä pidemmälle kirjoitus ja voidaan käyttää uudelleen normaali istuntoa keskeyttämättä töykeä.

ini_set('session.gc_maxlifetime', 14400);
 ini_set('session.gc_probability', 1);
 ini_set('session.gc_divisor', 100);
 session_save_path(APP_PARENT_DIR . '/sessions');

Parannettu Zemanta

Se on aika bekapinga taas 🙂 Eilen,en ymmärrä, mitä unohdin tehdä varmuuskopio kaikki tiedostot oikea 2 kone. Lady, on mahdollisuus pelastaa. Koska kone testi, ei tarvita, kuka tietää, kuinka paljon muovia järjestelmän palauttaminen, joten käännyin minun vanha käsikirjoitus joka on joitakin alkeellisia toimintoja. Yleensä se on hyvin ruma, ja hänen opswatin tunnettu toiminnot, sanoa, vain olla varovainen 1 arkisto erikseen, että koodi on staattinen näitä toistoja. Затова реших да го пренапиша, като този път не го надрасквма за 10 minuuttia. В новата си версия вече се подържат 10 стари backup файла. Което си една добра цифра.

#!/bin/bash

#path to tar command
TAR="$(which tar) cvzf"

function backup {

#path to beckup folder
cd $1

#remove oldest archive
rm -r *.10.tgz
sleep 3 #time for removing

#move old archives, we will save 10 old files
for i in {9..1}
do
let "n=$i+1"
mv "www.$i.tgz" "www.$n.tgz"
mv "mysql.$i.tgz" "mysql.$n.tgz"
mv "cron.$i.tgz" "cron.$n.tgz"
done

#and move the newest : )
mv www.tgz www.1.tgz
mv mysql.tgz mysql.1.tgz
mv cron.tgz cron.1.tgz

#path to first folder
$TAR www.tgz /var/www/
sleep 2
#path to second folder
$TAR mysql.tgz /var/lib/mysql/
sleep 2
}

#call backup function with folder path arg
backup /media/backup1
sleep 2
backup /media/backup2

#E0F

В общи линии нещата са ясни. Minulla 2 монтирани дяла за бекъп в /media и в тях се наливат новите архиви като преди това се преименуват старите. Структурата на имената е очевидна и при ls команда ориентира е интуитивен.

Parannettu Zemanta

Vector logo of the PHP programming language wi...

Днес ще драсна едно леко четиво за php cache päälle html. Тука говорим за кеширане на изхода от кода ни а не както съм писал да кешираме скритповете до opcode ниво с eAccelerator. Така за какво иде речнека да си припомним на бързо работата на php-то. Подаваме заявка на web server-a ни той приема параметрите който подаваме след това той ги подава на php скрипта той се компилира и плюе резултат в html вариант. Това е в доста общи линии. Каква ще е идеята ни тука да прескачаме заявки, да прескачаме големи блокове или не чак толкова големи блокове като директно изрисуваме вече веднъж компилирания изход. Преимуществата са очевиднинамаляна на времето за изпълнение, по малко натоварване и потребление на ресурси. Като цяло не е откриване на топлата вода нито е нещо кой знае колко сложно. Има множество класове за тая цел като PHP Pear Cache_Lite който разполага с прекрасна функционалност но аз мисля в бъдеще да си напиша мой с доста по облекчена структура и мой си изисквания към кеширането. Сега ще разгледаме най аборигенския вариант с Output Control Functions. Така нека да кешираме нещо

//start cache all output after that will be saved

ob_start();

//generate output

echo 'Some dynamic output';

echo 'Some other dynamic output ...';

//assign output into variable

$var=ob_get_contents();

//close cache output

ob_end_flush();

Горния код е тривиален но нека да обясним какво стана. Първо декларираме от коя част в кода започва кеширането. След това си генерираме по стандартен начин изхода от кода. След това генерирания изход се присъединява към променлива която ще е достъпна по късно дали през файл някакво или през sessions това си е ваше решение. Накрая изчистваме и прекратяваме кеширането. Съвсем тривиална операция ако да речем геенрирането на кеша минава през огромни блокове от код така можем да спестим доста процесорно време като кешираме за известно време или за една сесия. Вече всичко опира то това какво искате дали да е общодостъпен кеша или да е достъпен за различен потребител.

Parannettu Zemanta

Seuraava artikkeli voi olla huippu tyhmyys, mutta kuten olen aina sanonut, että olen parempi kuin koodaaja ylläpitäjä. Eilen kun drameh ne, AJAX käsikirjoituksen ja piti lähettää joitakin tietoja, jotka et koskaan käytä hash, koska kirjoitus ei jaa $_SESSION array ja se kaikki tulee vähän hutera. En siis tee seuraavat swindin kaikki ens jotka on esitetty POSTITSE tai tehdä niistä yksi md5 hash confererence parametrit, ja sitten verrata sitä. Kaiken kaikkiaan ei ole huono järjestelmä, mielestäni. Hashirama algoritmeja tähän tarkoitukseen bol MD5 , SHA, DESC.. Jopa täällä kaikki on selvää sanoa, se käyttää MD5 hash parametrit (kuten deistvitelnost tehdä). Meillä on 3 parametri, joka palvelee SAADA, i=1, n=2 m=3 sanoa line hesione on 123 mikä tekee meistä seuraavat MD5 hash 202cb962ac59075b964b07152d234b70. Ei ole paljon mielenkiintoisia. Tämä hash laskee muutaman sekunnin mistään hyökkäys. Nyt siellä on suolaa ja pippuria minun yksinkertainen idea. Sanoa, että ensimmäinen ja viimeinen merkki merkkijono, sekä niiden osuus tilaa, joten 002cb962ac59075b964b07152d234b72 hash jo, jos joku, jos et ole lukenut koodi typeryys, se tekee asioista zagrujat kun yrität rikkoa. Todellinen hash on erilainen, ja jopa izsnifen erittäin hyödytön. Mutta miksi lopettaa siellä voimme jakaa hash useita lohkoja, MD5 tässä tapauksessa pituus on 32 - symboli, jos jaettuna 4 lohko 8 symbolit ja niiden sijainti muutos tulee jopa enemmän epämiellyttävä asema. Далеч най приятния ефект е, че визуално си е стандартен md5 хеш и злия хахор може да си чупи докато има желание. Не съм добър по криптиране и не мога да пледирам за нещо кой знае колко фундаментално и прочие но ми допада колко е семпло като идея и реализация и съвременно надеждността е критично висока не като на нормалния MD5 които с една по грамотна видео карта се чупи за норматив.

Ето и примерен код за първата идея с размяната на първия и последния символ елементарен код от 3 реда 🙂

<?php

$hash = '202cb962ac59075b964b07152d234b70';

$first = substr($hash,0,1);
$last = substr($hash,-1);
$rest = substr($hash,1,30);
$hash = $last.$rest.$first;
echo "The real hash is : $str <br> inverted hash is : $hash";

?>

http://www.youtube.com/watch?v=Fvje9dzBHPM

Siirrä projekti, joka on ohjelmoitu ilman aktiivista versionhallinta tällä hetkellä, tämä on täyttä hulluutta. Yleensä on monia vaihtoehtoja markkinoilla , mercurial , git , svn . Joten, jos aiot täytyy selittää, mitä versio valvonta on parempi, ja miksi ei. Me käytämme git. Syitä on monia – helppo säätää, erittäin joustava, kirjoittanut Linus Torvalds ylläpitää Linux-Ytimen versio, jälkimmäinen ainakin 2 syitä 😉 . Tänään minun piti luoda uusi arkisto, uusi projekti. Itse olen luonut muutaman arkistot ja se on hyvin kauan sitten, kun vietimme ja unohtaa hienovarainen pistettä, että. Luo repository ovat kohdanneet muutamia tiedostoja varastointiin aluksi kaikki meni juuri. Sam meni kauppaan, oli standardi:

git init
echo "Short project's description" > .git/description
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
git commit -a
touch .git/git-daemon-export-ok

Yleisesti, mitään, että ei ole oikein. Sitten päätin tarkistaa kauko-kone syrana sisältö ja yrittää push-olen lyönyt ruma viesti:

Ajaa git://gitHost/hanke
kauko: virhe: kieltäytyy päivittää kassalla branch: refs/päät/master
kauko: virhe: Oletuksena, päivittäminen nykyinen haara ei-paljas repository
kauko: virhe: evätään, koska se tekee indeksi ja työskennellä puu epäjohdonmukainen
kauko: virhe: mitä sinä työnsit, ja vaatii &#8216;git reset –kova’ ottelu
kauko: virhe: työ puu PÄÄ.
kauko: virhe:
kauko: virhe: Voit asettaa &#8216;vastaanottaa.denyCurrentBranch’ kokoonpano muuttuja
kauko: virhe: &#8216;sivuuttaa’ tai &#8216;varoittaa’ kauko arkistoon, jotta tunkee
kauko: virhe: sen nykyinen haara; kuitenkin, tämä ei ole suositeltavaa, jos et
kauko: virhe: järjestetty päivittää työnsä puu vastaamaan mitä olet ajanut joissakin
kauko: virhe: muulla tavalla.
kauko: virhe:
kauko: virhe: Voit litinä tämä viesti ja vielä pitää oletuksena käyttäytymistä, asettaa
kauko: virhe: &#8216;vastaanottaa.denyCurrentBranch’ kokoonpano muuttuja &#8216;*&#8217;.
Git://gitHost/hanke
! [kauko-hylätty] mestari> mestari (haara on tällä hetkellä kassalla)
virhe: ei push joitakin refs &#8216;git://gitHost/hanke’

Niin, ilmeisesti, yrittää comitan tärkein projekti puu ja ohjelmisto pysäytti minut. Yleisesti ottaen olen aio tehdä ylimääräisiä osia, koska ihmiset, jotka ovat mukana hankkeissa ovat selkeät ja useita muita syitä. Тука идва момента да отбележа че съм дефинирал много некадърно заглавието но това е друг момент. Като цяло решението на проблема е тривиално в .git/config на проекта ви трябва да добавите следната директива:

[receive]
denyCurrentBranch = false

След това всичко си идва на мястото.

http://www.youtube.com/watch?v=16bRiH5zfOY