Socket 370, pontosan nem tudom milyen :)
php
A register_shutdown_function esete az ImageCreateFromPNG-vel
Sajnos úgy tűnik, hogy az php GD comagban lévő imagecreatefrompng függvénynek lehet olyan bemenetet adni, amitől úgy hasal el és rántja magával a php-t, hogy utóbbinak már arra sincs ereje, hogy meghívja a register_shutdown_function-el regisztrált kilépő függvényünket.
Aki képeket akar feldolgozni cron-ban php szkript-el, annak jó ezt észben tartani.
parse_url() alternatíva
HTML-ből kiszedett url-eket dolgoztam volna fel, de a PHP beépített parse_url() függvénye egy warning kíséretében elszáll, ha relatív url-eket adunk meg.
Szintén nem tetszenek neki az olyan URI-k, mint pl. a mailto: vagy ftp://
Írtam egy függvényt, ami úgy dolgozza fel az URL-eket és URI-kat, hogy
- soha nem száll el warning-al
- jól kezeli a relatív URL-eket
- teljes értékű helyettesítője a php parse_url()-nek
Itt a kód, illetve a post végén egy linken le is tölthető. Bárki bármilyen hibát talál, jelezze a hozzászólásoknál, hogy javíthassam.
<?php
function parse_url_relative($url, $component = NULL){
$full_rx = '!^
(?P<scheme>[a-z][a-z0-9\+\-\.]*):/* # scheme
(?:(?P<user>[^:@]*)(?::(?P<pass>[^@]*))?@)? # user and password
(?P<host>[^/\?\#:]*) # host
(?::(?P<port>[0-9]+))? # port
(?P<path>[^\?\#]*) # path
(?:\?(?P<query>[^\#]*))? # query
(?:\#(?P<fragment>.*))? # fragment
$!ix';
$path_rx = '!^
(?P<path>[^\?\#]*) # path
(?:\?(?P<query>[^\#]*))? # query
(?:\#(?P<fragment>.*))? # fragment
$!ix';
if (!preg_match($full_rx, $url, $m)) {
preg_match($path_rx, $url, $m);
}
$return = array(
'scheme' => isset($m['scheme']) ? $m['scheme'] : NULL,
'user' => isset($m['user']) ? $m['user'] : NULL,
'pass' => isset($m['pass']) ? $m['pass'] : NULL,
'host' => isset($m['host']) ? $m['host'] : NULL,
'port' => isset($m['port']) ? $m['port'] : NULL,
'path' => isset($m['path']) ? $m['path'] : '',
'query' => isset($m['query']) ? $m['query'] : '',
'fragment' => isset($m['fragment']) ? $m['fragment'] : '',
);
switch ($component) {
case NULL:
return $return;
case PHP_URL_SCHEME:
return $return['scheme'];
case PHP_URL_HOST:
return $return['host'];
case PHP_URL_PORT:
return $return['port'];
case PHP_URL_USER:
return $return['user'];
case PHP_URL_PASS:
return $return['pass'];
case PHP_URL_PATH:
return $return['path'];
case PHP_URL_QUERY:
return $return['query'];
case PHP_URL_FRAGMENT:
return $return['fragment'];
}
}
?>Mi a közös bennük: Firefox 2, MySQL 3, PHP4, Drupal 5?
Több mint két hete már, hogy megjelent a Firefox 3, kiváncsi lettem, hogy mennyien tértek át. Az F1világ látogatottsági statisztikája alapján az összes Firefox felhasználóból 17% tért át a 3-as verzióra. Ami kevés, szerintem.
Akkor mégis mi is a közös a Firefox 2, MySQL 3, PHP4 és Drupal 5-ben?
Nem, nem csak az hogy internettel kapcsolatos szoftverek, hanem az, hogy túl jól sikerültek, és kevesen tértek át az újabb verziókra.
A MySQL 3 hírhedt arról, hogy mennyi helyen használják, PHP4 szintén, és úgy néz ki a Drupal 5-el is ez a helyzet. Bár ez a hír valószínüleg lendít majd a Drupal 6 elterjedésében. Legalábbis remélem. Az FF3 penetráción meg egy Firebug dobna sokat, szerintem.
GoPHP5.org
Anno, 2007 közepén, nagy lelkesedéssel olvastam a GoPHP5 kezdeményezésről. Örültem, hogy végre valaki felkarolta ezt a problémát.
Azonnal el is kezdem figyelni, hogy a CentOS csapata mikor fogja bevezeti a base vagy a centosplus repo-ba a PHP 5.2-t. Akkor még 5.1.6 volt a standard PHP verzió.
Több mint másfél hónapja elmúlt 08.05.02, és szomorúan jelenthetem, hogy azóta sem történt előrelépés, a centosplus repository php verziója még mindig az 5.1.6.
Én nem vagyok egy Linux guru, ha egy mód van rá elkerülöm olyan szoftverek telepítését, amelyek nincsenek benne egyetlen hivatalos repo-ban sem. Az én szerveremen akkor lesz PHP 5.2, amikor a CentOS team is úgy akarja.
Különösebben nem fáj egyébként a hiánya. PDO abszolút nem hiányzik, jó XML támogatás 5.1 alatt is megoldható.
Egy dologra fáj csak a fogam, a fájl feltöltés állapotellenőrzés-re.
Remélem CentOS-ék mihamarabb lépnek ez ügyben, bár tudom, hogy nem csak rajtuk múlik.
