Pár záseků na které můžete narazit při upgrade PHP 5.2

Včera jsem řešil prodloužení jednoho hostingu, kde mi jede moje onlinovka. Vzhledem k tomu, že už tam zůstala sama, chtěl jsem usmlouvat trochu lepší cenu, dříve jsem používal multihosting. Mám jí u Aerohosting společně s emailem. Přiznám se, že od roku 2004 jsem nemusel řešit žádný velký incident. Na začátku jsem tedy s majitelem probírali detaily, protože hra na tu dobu celkem vytěžovala železo. V podstatě jsem se při jejím programování dostal v PHP od začátečník na pokročilý. Takže na těch 4 MB kódu to je znát, které jsem z velké části několikrát přeprogramovával je to znát. Některé includované soubory nepoužívají funkce, ale opakující se kusy kódu, protože mi přišly funkce zbytečně nároční, jinde už je vše pěkně v OOP. V roce 2008 jsem v podstatě ukončil vývoj a hru nechal puštěnou pro skalní fanoušky. No a od té doby prostě jela 😀

Když jsem probíral přechod na nižší tarif, bylo mi sděleno, že někde si nerozumí skript se serverem a vyčerpávají se zbytečně vlákna. Tušil jsem, že šlo o jedny z mých posledních hrátek. Přes Ajax se v jednu dobu hráči aktualizovala data. Vše by vyřešil přechod na vyšší verzi PHP. Mno a tady mě to trochu trklo. Vždyť to jede na PHP 5.2!

Nakonec jsme se dohodli, že se tarif sníží, ale přehodím si to na novější verzi. Nakonec jsem vybral 5.4, protože ta je stabilní a pokud to odladím pro ní, tak s novou 5.5 by snad neměl být problém. No a začala mela 🙂

MySQL a nové hashe hesel

O tomto problému jsem kdesi četl, jen mě nenapadlo, že se s tím setkám. Takže chyba

Warning: mysql_connect(): The server requested authentication method unknown to the client ...

mě sice vystrašila, ale po čase jsem si vzpomněl o čem to je. Problém dělají hesla k MySQL. Používá se nové delší hashování, takže stačí jen změnit hesla uživatelů (anebo znovu zadat ty stará) k databázím a jede to.

Po chvilce testování se mi to rozchodilo. Za pár minut mi také došlo upozornění z AeroHostingu, že je třeba na tohle myslet.

Některé funkce zrušeny

Čekal jsem, které funkce budou zrušeny úplně, anebo začnou hlásit chybu. Zatím se mi ozvala jen jedna a to ereg_replace.

Function ereg_replace() is deprecated ...

Zkusil jsem jí nahradit pereg_replace, ale zlobila. Pak jsem na to koukl, zakroutil hlavou a přemýšlel co mě vedlo k tomu, vůbec tu funkci na výměnu řetězců použít. Přepsal jsem to str_replace(), která se na to hodí víc.

Uvidíme, co najdou hráči za další.

Některé funkce přestaly fungovat

Ke hře jsem si napsal jednoduchý chat. V podstatě je postavený na návodu z knížky pro začátečníky. Dneska už by jsem jej udělal úplně jinak (ajax, jiné PHP funkce a tak dále). V podstatě současná verze umí jen ověřit řetězec, připsat kus na konec souboru a to je všechno.

Jenomže odeslané posty se nezobrazovaly. Nejdřív jsem si myslel, že je problém s funkcí na zápis do souboru. Naštěstí se část zapsala a část ne. Chyba byla v kontrole řetězce a odstraňování potenciálních hrozeb. Pomocí komentování jsem zjistil, že zlobí htmlspecialchars(). Nevím, čím přesně mi mazala celý obsah řetězce, ale po zkušenostech z jiného projektu, jsem jí nahradil strip_tags().

Z tříd na hraní opravdové OOP

U tříd jsem čekal největší provar. Vždyť právě na mé Land of Ice jsem se je učil nějak efektivněji používat. Pamatuju si, že má první třída měla za úkol obsluhovat portál, kam mohli hráči vkládat runy a pokud se trefily, tak z něj něco vylezlo. Třídu jsem psal na Slovensku a byl jsem na ní patřičně hrdý. Ovšem v té době jsem tak nějak ještě nechápal jaká síla a potenciál v OOP vlastně je. Přiznám se, že jsem to tak trochu považoval za módní výstřelek 😀

Non-static method Class::funkce() should not be called statically ...

No z tříd na hraní už jsou opravdové třídy, které musí dodržovat pravidla. Naštěstí stačilo jen z funkce() udělat public static function(). Nějak jsem dříve neřešil, když třídy používaly globální proměnné. V starých funkcích jsem tahal id hráče ze SESSION.

Závěr

Od 2008, kdy jsem si jako programátor celkem věřil už uteklo hodně času. Spoustu jsem toho zapomněl a dále se nerozvíjel. Ani toho popravdě nelituju, možná občas trochu. Místo toho se víc věnuju marketingu a SEO. Více času můžete trávit mimo počítač.

Možná ještě jeden dodatek. Proč stále používám AeroHosting za 59 CZK/měsíc, když by jsem to všechno mohl hodit k ostatním projektům. No vždy fungoval opravdu skvěle, to musím zaklepat. Mám tam hlavní email. Právě elektronickou poštu považuji za velice důležitou službu, kde chci mít po ruce online podporu na telefonu a hlavně to musí šlapat. Email je jako internetová občanka, kterou musíte ukázat pokud jde do tuhého. Navíc mají Greylisting, která odfiltruje neuvěřitelné množství bordelu. Všude jinde, kde jsem emaily zkoušel to dopadlo vesměs špatně. Nefunkční spam filtry, složité nastavování, ztrácející se zprávy.

Přiznám se, pokud by cenu nesnížili, tak těch 156 CZK/měsíc by jsem platil dál. Jen za to že budu mít funkční, nezaspamovaný email s technickou podporou, která mi pomůže, odpoví na otázky, vysvětlí a nebojí se individuálního nastavení. O hostingu už by to neplatilo, tam už by mi to přišlo moc drahé na dnešní dobu. Njn osobní email = osobní přístup = osobní nastavení 🙂


Jak bude reklama vypadat?
-
Nechceš zde reklamu napořád jen za 60 Kč?
Zobrazit formulář pro nákup

3 komentáře

  1. K tem mailum – zkousels Gmail? ihmo nic lepsiho neexistuje, velmi dobry antispam, perfektni filtry, skvele webove rozhrani. Sam jich mam asi 10 🙂

  2. Len by som doplnil jeden ,,zásek”. Nedávno u nás na serveri prebehol upgrade PHP. Po dokončení zostal nefunkčný jeden z webov kvôli htaccess, ktorý bolo treba vygenerovať ešte raz. Síce neviem, čo to malo spoločné s upgradom PHP, ale bola to jediná zmena, ktorá prebehla pred znefunknčnením webu. Keď som porovnal starý a nový htaccess, tak v starom chýbalo niekoľko znakov.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.