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 :
- 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);
?>
- 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.
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;
}
}