تأخرت في الرد بعض الشيء نظرا لانشغالي.. ارجو المعذرة
بخصوص طلبي السابق فكان لي منه حكمة بانك تمشي في طريق معين سيسهل علينا الوصول الى الحل النهائي
لكن الان سوف اضع الحل النهائي جاهزا .. يعني اجيب من الآخر
= قمت بالتعديل على الكلاس السابق لانه كان يعمل fetch لاول صف من النتيجة فجعلته يرجعها كاملة هذه هي
كود PHP:
<?php
###################################
/**
* @author mohamedhelal
* mohamed_helal123456@hotmail.com
* ÈÑãÌÉ ãÍãÏåáÇá
* ÌãíÚ ÍÞæÞ åÐÇ ÇáÓßÑÈÊ áãÍãÏåáÇá
* ÓßÑÈÊ helalEGYPT
* ÓßÑÈÊ El_Masry
* mohamedhelal
* @copyright 2009
*/
####################################
class DB_CLass{
protected $HOST = "localhost";
protected $DB_USERNAME = "";
protected $DB_PASSWORD = "";
protected $DB_NAME = "";
protected $DB_CONTENT;
protected $SERV_CONTENT;
protected $SQL_RESULT;
########################################################
########################################################
function _construct($host,$user,$pass,$db){
$this->HOST = $host;
$this->DB_USERNAME = $user;
$this->DB_PASSWORD = $pass;
$this->DB_NAME = $db;
$this->__CONTENT();
$this->__DESCONTENT();
}
protected function __CONTENT(){
$this->SERV_CONTENT = @mysql_pconnect($this->HOST,$this->DB_USERNAME,$this->DB_PASSWORD);
$this->DB_CONTENT = @mysql_select_db($this->DB_NAME,$this->SERV_CONTENT);
return $this->DB_CONTENT;
}
protected function __DESCONTENT(){
if(!$this->SERV_CONTENT){
die("<h1 align='center'>ÎØÇÁ Ýí ÇáÇÊÕÇá ÈÓíÑÝÑ ÞÇÚÏÉ ÇáÈíÇäÇÊ</h1>");
}elseif(!$this->DB_CONTENT){
die("<h1 align='center'>ÎØÇÁ Ýí ÇáÇÊÕÇá ÈÞÇÚÏÉ ÇáÈíÇäÇÊ</h1>");
}
}
protected function SQL($sql){
return @mysql_query($sql);
}
function QUER($SQL){
$SQL = $this->SQL($SQL);
$FETCH = $this->FETCH($SQL);
$NUM = $this->row($SQL);
$arr = (object)array("FETCH"=>$FETCH,"num"=>$NUM);
unset($SQL);
unset($FETCH);
unset($NUM);
return $arr;
}
protected function FETCH($SQL){
$rows = array();
while($row = @mysql_fetch_array($SQL)) $rows[] = $row;
return $rows;
}
protected function row($SQL){
return @mysql_num_rows($SQL);
}
############################################################
############################################################
}
?>
= ثم قمت بعمل دالتين .. الأولى Code_1 بها loop يدور 1000 دورة .. و في كل مرة نقوم بطلب بيانات من جدول يحتوي على 669 صف تم تحديدهم كلهم
كود PHP:
function bm_1($loops){
for($i=$loops;$i>0;--$i){
$helal = new DB_CLass();
$DB['HOST'] = "****.*********.***";
$DB['USERNAME'] = "******";
$DB['PASSWORD'] = "**********";
$DB['DB_NAME'] = "test_helal";
$helal->_construct($DB['HOST'],$DB['USERNAME'],$DB['PASSWORD'],$DB['DB_NAME']);
$r = $helal->QUER("select*from test");
$num = $r->num . "<br>";
foreach($r->FETCH as $row){
// print_r($row);
}
}
}
= الثانية Code_2 تتعامل مع مكتبة مدمجة في ال php ايضا بها loop يدور 1000 دورة .. و في كل مرة نقوم بطلب بيانات من جدول يحتوي على 669 صف تم تحديدهم كلهم
كود PHP:
function bm_2($loops){
for($i=$loops;$i>0;--$i){
$helal = new PDO('mysql:host=****.*********.***;dbname=test_helal', '******', '**********',array(PDO::ATTR_PERSISTENT => true));
$result = $helal->query('select*from test');
$num = $result->rowCount().'<br />';
while($row = $result->fetch()){
// print_r($row);
}
}
}
= النتيجة كما يلي:
كود:
Code_1: 3.248 s
Code_2: 1.536 s
Code_2 اسرع من Code_1 بالضعف تقريبا
* أخلص مما سبق الى ان استخدام اي مكتبة مدمجة في php سيعطيك نفس النتيجة .. تفوق ساحق على اي كلاس مكتوبة بال php
* من لديه رأي اخر فليتفضل بسرد وجهة نظره ولنتناقش فيها