PHP Http Proxy

Bu içerik PHP kategorisi altında. Ekim 22, 2010 Hiç yorum yapılmamış

Eger php kodlarınızın calıstıgı sunucu internete proxy aracılıgı ile cıkıyorsa ve kodlarınızda file veya file_get_contents ile internetten birseyler download ediyorsanız bu fonksiyonlara tek tek $context parametresinde proxy ayarını vermeniz gerekiyor.

Bunu kodunuzu degistirmeden sunucu tarafında yapmak isterseniz su adımları izleyebilirsiniz :

  1. Oncelikle asagıdaki phpyi sunucunuzda uygun bir yere kaydedin :
    <?php

    $opts = array(‘http’ => array(‘request_fulluri’ => true,
    ‘proxy’ => ‘tcp://proxy_host:proxy_port’));
    stream_context_get_default($opts);

    ?>

  2. daha sonra php.ini dosyasında

    auto_prepend_file  = /path/to/your/proxy/file.php

    seklinde ekleyin.

Bu kodlar PHP 5.1.0 ve ustu icin gecerli. Ayrıca bazı http request yapabildiginiz ama $context parametresi almayan fonksiyonlarda gecerli olmuyor. Ornegin getimagesize fonksiyonu gibi. SoapClient icin de wsdli dısarıdan yukluyorsanız optionslarda proxy ayarlarını ayrıca belirtmeniz gerekiyor.

Bitwise operatorler ve DBdeki bir yapıya ait özelliklerin yönetimi

Bu içerik PHP kategorisi altında. Ekim 1, 2010 Hiç yorum yapılmamış

Zaman zaman projelerde kurdugunuz bir db yapısının ( ornegin haber, icerik vs. ) cesitli ozelliklerini saklamak gerekebiliyor. Linux chmoddaki mantıgı kullanarak, ileriye yonelik minimum development ve db degisikligi ile bu ozellikleri saklayabiliriz. Bir örnek üzerinde  acıklamak daha iyi olacaktır :

Bir haber sitesi yaptığımızı varsayalım ve herbir haberin “yeni”,”en_cok”,”en_cok_yorumlanan” gibi ozellikleri olsun ( attribute ). herbir ozellik icin haber tablomuzda kolon yapmak yerine bir tane ozellikler seklinde int bir kolon yapıp ozellikleri su sekilde saklıyoruz .

“yeni” icin 1 degerini ( 2 ^ 0 )

“en_cok” icin 2 degerini  ( 2 ^ 1 )

“en_cok_yorumlanan” icin 4 degerini (  2^2 )

sabitlerini berliyelim. Daha sonra DBde bir haber sadece yeni ise ozellikler kolonu 1 olacak. eger hem yeni hem en_cok okunan ise 3 degerini alacak. Yani hangi ozelligi tasıyorsa o ozelligin degeri bu kolona eklenecek, ozellik kaldırıldıgında ise deger cıkarılacak.

MYSQLde WHERE kısmında direkt bitwise operator ile istediginiz degerleri cekebilirsiniz :

//Yeniler

SELECT * FROM haber WHERE ozellik&1=1

// Yeniler ve en cok yorumlananlar

SELECT * FROM haber WHERE ozellik&5=5

// encok okunanlar veya en cok yorumlananlar

SELECT * FROM haber WHERE (ozellik&2=2 || ozellik&4=4)

PHP icin ise asagıdaki fonksiyonlar kullanılabilir :

function isAttr($colVal,$attrVal)
{
return ($colVal&$attrVal) ?true:false;
}
function addAttr($colVal,$attrVal)
{
removeAttr($colVal,$attrVal);
$colVal = $colVal+$attrVal;
}
function removeAttr($colVal,$attrVal)
{
if ($colVal>$attrVal)
{
$colVal = $colVal^$attrVal;
}
}