da circa 2 settimane php 5.3 Egli entra lentamente ma inesorabilmente la storia. L'11 hanno annunciato la fine della sua manutenzione e che saranno inseriti solo le patch di sicurezza per 1 anno. fondamentalmente PHP 5.4 va in fasi vecchia stalla e PHP 5.5 diventa stabile, che è meno divertente perché ancora parte di aggiunte e nuovi plugin php non funzionano correttamente, ma piuttosto la versione 5.5 È abbastanza nuovo quindi mi asterrò dalla migrazione ad esso.

Quindi diciamo che per me la migrazione 5.4 da 5.3. In precedenza avevo messo informazioni per le funzioni obsoleti, quelli che hanno cambiato drasticamente e coloro che non potranno più essere mantenuta per senza drammi da entrambe le parti che non si accende o 😉 Quindi questa tempistica mattina di inizio della migrazione in giro 7 diventando, che non vi è il minimo dolore durante la migrazione se non andare senza problemi. Con mia grande sorpresa, tutto è andato più agevolmente – compilato PHP 5.4.17 Ho iniziato e apache-oh cielo è tutto lì. Un rapido sguardo intorno i registri ruggirà di funzioni depricated o non del tutto sconosciuto – Ovviamente i ragazzi hanno fatto bene il loro lavoro. Poi mi è stato appena ricompilare e supplementi che vengono compilati con la vecchia API come APC, RAR e altri. Secondo riavvio e tutto si addormentarono. A parte si aspettano miglioramenti della produttività come le persone in tutto il mondo puntando alluce alcune compresse in cui mostra come PHP 5.4 consuma meno RAM ed esegue gli script più veloce.

Per modificare il dominio in WordPress è un certo dolore. Recentemente ho dovuto fare diverse cose già accadendo sport veloci 😀 . Se posso sumariziram passi sono 2 – naturalmente senza spostamento di file, impostazioni se cambia completamente di hosting.

1. Cambiare il vecchio URL per il nuovo – Le cose che qui con banali. Aprire il file wp-config.php e metterlo in questi 2 fila

define('WP_HOME','http://example.com');
define('WP_SITEURL','http://example.com');

Come sostituire http://example.com con il nuovo.

2. Fin qui tutto bene sito ora si apre il lavoro url-esimo, ma contenuto caricato, come immagini, documenti e quindi non visibile. Qui si ha già una sfida brutta. Essi devono sostituire il vecchio URL-esimo in un nuovo database. Era processo terribilmente fastidioso soprattutto per i principianti, che non fare bene con la sintassi SQL, но вече има доста приятен скрипт searchreplacedb2, che lo rende scomodo per voi. L'utilizzo è banale – caricarlo nella directory principale in cui il wordpress pagina e aprirlo nel browser tuo. След това следвате стъпките като първо ще ви пита за потребителско име и парола който е взел от вашия wp-config.php и след това ще ви пита за новото и старото url. След последната стъпка ще се наложи да поизчакате при мен отнемаше средно 40сек -50сек.

Това е във общи линии нищо трудно или супер сложно.

Debian OpenLogo

Миналия ден един приятел ми писа че имал проблем с Debian server-a си. По точно не му пазел сессиите повече от 30 минути независимо колко се настройва session.gc_maxlifetime. В общи линии проблема е че Debian са решили да пренапишат поведението на сесиите като вместо garbage collector-а се стартира един cron на всяка 9-та и 39-та минута който почиства старите сесии. Тои се намира в /etc/cron.d/php5

като цяло семпличък скрипт който стартира от своя страна /usr/lib/php5/maxlifetime и в него се намира променливата колко време да е живота на кукито който е 1440 секунди или 24 минути 😉 От тук нататък има 2 варианта или да се спре крон-а и по този начин се прекратява автоматичното чистене което може по късно да се пренастрой от php.ini или направо в самия скрипт да се промени продължителноста на живота на сесиите с променливата max. Аз лично предпочитам втория вариант. Доста по чист е като цяло но има и недостатъкако се презапише файлът промените ни ще се изгубят което си е неприятен факт.

PS. Сега като се замисля вероятно ако се дефинира друго място където да се съхранява сеиината информация чрез самото php би трябвало да излезе извън обхвата на скрипта и по този начин да се използва пак по нормален сесията без да прекъсва грубо.

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');

Arricchito da Zemanta

Oggi parlo di la noia intorno ad un singolo server con Suhosin toppa e come Debian affare sqeeze con esso. Ora si comincia un po 'a distanza. Quando si installa php nel sistema dei pacchetti Debian (stabile per gli altri non posso dire quanto ancora) è necessario installare e Suhosin mod ad esso. Ho avuto problemi con qualche sistema MAH-frame scritto in php e ha preso la decisione cardinale, invece di fare il debug del sistema e di nuovo rapporto dello sviluppatore di perdere patch di sicurezza e quindi salvare me stesso il disturbo. Nel complesso posso dire con fiducia che questa è stata una delle decisioni più stupide che abbia mai scattato. Al primo modulo rimuovere PHP5-Suhosin riavvio del server web-a e oops postale – patch-un è ancora caricato. Dopo un breve studio trovare, che il pacchetto viene compilato e trotterella direttamente nel codice che significa che nessuna esclusione o la rimozione a meno ricompilare nuovamente il codice senza cerotto. Risolvere che si drapna e ricompilare al pacchetto deb. Fatto Detto fare il vostro apt-get PHP5 fonte mi tira questo codice sorgente, razpaketirva ed ecc. Ecco la mia idea ideale per rimuovere la fonte del pacchetto per rimuovere la patch e compilare di nuovo al pacchetto Debian più uno due piccole ottimizzazioni in compilazione. detto done – eliminare la zona inutile di debian / patches / suhosin.patch Gli ho tolto dal gioco in debian / patches / series. Finora tutto in modo chiaro e senza problemi. Quindi eseguire per compilare il pacchetto debuild e come mi aspettavo ho saltato la compilazione a causa di intestazioni mancanti. Naturalmente ci saranno penuria – Sono ancora con netinstall debian. Quick fix stupidità eseguire nuovamente la compilazione, ad un certo punto di svenire di nuovo solo, che con uno strano errore di Zend / zend_stream.h o .c Non ricordo esattamente (se riesco a fare più tardi per controllare esattamente quali file e la riga tuonato). Dopo qualche dubbio ciò che sta accadendo e perché diavolo può rombo del nucleo Zend – dove dovrebbe Rumble per qualsiasi motivo e un po 'di studio più trovare che questo problema è relativamente raro e non molti segni di esso. Ho il sospetto che una delle patch nell'origine era sbagliato, ma non ho i nervi a controllare. Hmmmmm strano super-strano. Quasi ho deciso di compilare il PHP puro, ma ho deciso di provare specchi dotdeb lì per vedere cosa succede. Ci compilazione è morto a causa di alcune strane dipendenze ma risparmiò i problemi nel corpo principale. Che a sua volta è comprensibile li facevano 30-40 patch che erano in pacchetto stabile. Dopo diversi tentativi falliti lunghe e mi sono stancato e ho spento il mio pacchetto di vaniglia e compilarlo con le opzioni quasi debian-ski con l'idea di riscrivere il mio attuale sistema ed installare nuovi pacchetti dall'alimentatore può comportarsi pacchetto installato dal repository (probabilmente un altro differenziata non è una soluzione ragionevole). Come mi aspettavo, senza alcuna installazione patch è andato liscio. Questo è il risultato del mio file config.nice:

#! /bin/sh
#
# Created by configure

CFLAGS='-g -O2 -fPIC -Wall -fsigned-char -fno-strict-aliasing   -gstabs' \
CXXFLAGS='-g -O2' \
'./configure' \
'--with-apxs2=/usr/bin/apxs2' \
'--prefix=/usr/local/php5' \
'--disable-cgi' \
'--with-config-file-path=/etc/php5/apache2' \
'--with-config-file-scan-dir=/etc/php5/apache2/conf.d' \
'--build=x86_64-linux-gnu' \
'--host=x86_64-linux-gnu' \
'--sysconfdir=/etc' \
'--localstatedir=/var' \
'--mandir=/usr/share/man' \
'--disable-debug' \
'--with-regex=php' \
'--disable-rpath' \
'--disable-static' \
'--with-pic' \
'--with-layout=GNU' \
'--with-pear=/usr/share/php' \
'--enable-calendar' \
'--enable-fileinfo' \
'--enable-hash' \
'--enable-json' \
'--enable-sysvsem' \
'--enable-sysvshm' \
'--enable-sysvmsg' \
'--enable-bcmath' \
'--with-bz2' \
'--enable-ctype' \
'--without-gdbm' \
'--with-iconv' \
'--enable-exif' \
'--enable-ftp' \
'--enable-dbase' \
'--with-gettext' \
'--enable-mbstring' \
'--with-onig=/usr' \
'--with-pcre-regex' \
'--with-mysql=shared,mysqlnd' \
'--with-mysql-sock=/var/run/mysqld/mysqld.sock' \
'--with-mysqli=shared,mysqlnd' \
'--enable-pdo=shared' \
'--with-pdo-mysql=shared,mysqlnd' \
'--with-pdo-odbc=shared,unixODBC,/usr' \
'--with-pdo-pgsql=shared,/usr/bin/pg_config' \
'--with-pdo-sqlite=shared,/usr' \
'--with-pdo-dblib=shared,/usr' \
'--enable-phar' \
'--enable-shmop' \
'--enable-sockets' \
'--enable-dom' \
'--enable-wddx' \
'--enable-tokenizer' \
'--with-zlib' \
'--with-kerberos=/usr' \
'--with-openssl=/usr' \
'--enable-soap' \
'--enable-zip' \
'--with-mhash=yes' \
'--with-exec-dir=/usr/lib/php5/libexec' \
'--with-system-tzdata' \
'--without-mm' \
'--with-readline=/usr' \
'--without-sybase-ct' \
'--without-sqlite' \
'--without-sqlite3' \
'--without-mssql' \
'--enable-pcntl' \
'--enable-inline-optimization' \
"[email protected]"

Questa configurazione è simile a quella di compilazione dotdeb. Като основаното и най важно е prefix опцията където ще се разполагат файловете с библиотеките на php. Него както и другите пъти ги коригирайте според вашата система така че да не се усети компилацията с промяна на пътищата.

Arricchito da Zemanta

Vector logo of the PHP programming language wi...

Днес ще драсна едно леко четиво за php cache di 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 това си е ваше решение. Накрая изчистваме и прекратяваме кеширането. Съвсем тривиална операция ако да речем геенрирането на кеша минава през огромни блокове от код така можем да спестим доста процесорно време като кешираме за известно време или за една сесия. Вече всичко опира то това какво искате дали да е общодостъпен кеша или да е достъпен за различен потребител.

Arricchito da Zemanta