جهِّز نفسك لسوالف كاست، واحصل على Macbook Air
ويكيمانيا 2008. الإسكندرية، من 17 وحتى 19 يوليو

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > PHP
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد
 
LinkBack أدوات الموضوع
عضو سوبر نشيط
تاريخ التسجيل: Apr 2006-
#1 (permalink)  
كيفية برمجة “تم انشاء الصفحة في 0.20 ثانية”


بسم الله الرحمان الرحيم

اليوم سنتعرف على طريقة برمجة حساب وقت تنفيذ الصفحة

لازم نفهم ان هذه البرمجة ستكون مقسمة على قسمين

اولا: نكتب هذا الكود اعلى الصفحة
كود PHP:

$start
=microtime();
$start=explode(' ',$start);
$start=$start[1] + $start[0]; 
ثانيا: هذا الكود يكون اسفل الصفحة يعني بعد اكواد البرنامج

المزيد ...

كود PHP:

$end
=microtime();
$end=explode(' ',$end);
$end=$end[1] + $end[0];

echo 
" الوقت المستغرق ".round($end-$start,2)." ثانية"
ونستخدمه بهذه الطريقة

كود PHP:

<?php
// هذا الكود يوضع اعلى الصفحة
$start=microtime();
$start=explode(' ',$start);
$start=$start[1] + $start[0];
// هنا ينتهي الكود

// هنا يكون اكواد برنامجك
// لنجرب كم سيستغرق طباعة ارقام من 0 الى 100000
$i=0;
while(
$i<100000){
// ØÈÇÚÉ ÇáãÊÛíÑ
echo $i.'<br>';
$i++;
}
//هنا ينتهي اكواد برنامج

// يوضع اسف الكواد
$end=microtime();
$end=explode(' ',$end);
$end=$end[1] + $end[0];

echo 
" الوقت المستغرق ".round($end-$start,2)." ثانية";
// هنا ينتهي الكود
?>
كما يمكنك بسهولة جعل هذه الأكواد في كلاس ليسهل استخدامها مستقبلا

الكلاس:

كود PHP:

class Turn
{
var 
$start;
var 
$end;
function 
start(){
$start=microtime();
$start=explode(' ',$start);
$this->start=$start[1] + $start[0];
}
function 
end(){
$end=microtime();
$end=explode(' ',$end);
$this->end=$end[1] + $end[0];
echo 
" الوقت المستغرق ".round($this->end-$this->start,2)." ثانية";
}
}; 
وطريقة استخدامها :

كود PHP:

<?php
// كلاس احتساب الوقت
class Turn
{
var 
$start;
var 
$end;
function 
start(){
$start=microtime();
$start=explode(' ',$start);
$this->start=$start[1] + $start[0];
}
function 
end(){
$end=microtime();
$end=explode(' ',$end);
$this->end=$end[1] + $end[0];
echo 
" الوقت المستغرق ".round($this->end-$this->start,2)." ثانية";
}
};

////////////////////

$nad= new Turn//تعريف الكلاس

$nad->start(); // بداية احتساب الوقت

$i=0;
while(
$i<100000){

echo 
$i.'<br>';
$i++;
}

$nad->end(); // نهاية احتساب الوقت وطباعة الوقت المستغرق
?>
كما يمكن حفظ الكلاس في ملف مثلا class.php

وادراجها مع البرنامج لتقليل عدد السطور البرمجية

كود PHP:

<?php
include('class.php');

////////////////////

$nad= new Turn//تعريف الكلاس

$nad->start(); // بداية احتساب الوقت

$i=0;
while(
$i<100000){
// ØÈÇÚÉ ÇáãÊÛíÑ
echo $i.'<br>';
$i++;
}

$nad->end(); // نهاية احتساب الوقت وطباعة الوقت المستغرق
?>
وهذا مثال عليه






عبد الواحد البشيري غير متواجد حالياً   قديم 27-01-2008, 02:22 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Aug 2004-
#2 (permalink)  

السلام عليكم -
هذا تعديل في الكود اللذي وضعة الاخ Nadorino.
سبب التعديل:
1- استخدام الخواص الجديدة التي اتت مع الاصدار PHP الخامس: الخاصية هو ان تستغل الدالة destruct__ التي تعمل اوتوماتيكيا عندما يتهي عمر البرنامج او الclass
2- لتقليل السطور المطلوبة لتشغيل الكود الى سطر واحد فقط

الملف: countTime.php
كود PHP:

<?php
class Turn
{
  function 
Turn(){
    
$this->start $this->addmilli();
  }

  function 
end(){
    
$result round(($this->addmilli() - $this->start)*1000,8);
    echo 
'<!-- Done in '.$result.' Seconds -->';
  }

  function 
addmilli(){
    
$temp explode(' ',microtime());
    return   
$temp[0] + $temp[1];
  }

  function 
__destruct(){
    
$this->end();
  }

}

$timer = new Turn();
?>
الشرح:
عندما ينتهي البرنامج او يمسح الclass من الذاكرة .. سيحاول مترجم الPHP ان يبحث عن الدالة ()destruct__ اذا ماكانت موجودة في ذاك الكلاس .. اذا كانت موجودة .. المترجم سيحاول ان يشغلها..

كيف؟ ليش؟ ولماذا؟
في لغة ال++C يوجد لكل كلاس destructor وcustructor .. الcustructor هو الدالة التي تبدء في حين تشغيل الclass. والdestructor هو الدالة التي تعمل في حين اغلاق او مسح الclass من الذاكرة.. فمثلا عندنا ينتهي عمل البرنامج، الdestructor يحاول معرفة اذا كانت هناك اي تغيرات في الملف .. اذا كانت هناك تغيرات يسئل المستخدم اذا كان يريد ان يحفظ التغيرات .. وله استخدمات متعددة . ان شاء الله ساشرح ذالك في درس من الدروس

طريقة الاستخدام: فقط ضع الامر في بداية الملف
كود PHP:
include 'countTime.php'
وسيعمل اوتوماتيكيا






__________________
هلابي افضل المواقع العربية تصميماً
انصح باستخدام ابونتو
hilaby غير متواجد حالياً   قديم 27-01-2008, 04:04 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Jan 2008-
#3 (permalink)  

بارك الله فيك ياغالي ,,






أبــو عبدالله غير متواجد حالياً   قديم 27-01-2008, 11:10 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Aug 2007-
#4 (permalink)  

مشكور علي الدرس

حقيقتا كنت بأسئل عنه

لكنك سبقتني






عقل الكمبيوتر غير متواجد حالياً   قديم 27-01-2008, 11:47 PM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Apr 2006-
#5 (permalink)  

اخي خالد
بارك الله فيك على الاضافة الرائعة والمهمة خاصة في php5
جعلت الموضوع اكثر فائدة بردك
شكرا لك

أبــو عبدالله,عقل الكمبيوتر
بارك الله فيكم
اتمنى ان تستفيدو خاصة من رد الأخ خالد






عبد الواحد البشيري غير متواجد حالياً   قديم 30-01-2008, 01:06 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: May 2006-
#6 (permalink)  

السلام عليكم
شكرا اخوي Nadorino

هذا كود بنفس الفكرة لكن بشكل مختصر :

كود PHP:
$start=array_sum(explode(" ",microtime()));

//محتوى الصفحة

echo array_sum(explode(" ",microtime()))-$start






__________________
سـبـحـان الله، والـحــمــد لله، ولا إلـه إلا الله، والله أكـــبـــــر.
ALMimoni غير متواجد حالياً   قديم 06-02-2008, 12:31 AM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: Sep 2004-
#7 (permalink)  

بارك الله فيكم
بصراحه موضوع مميز
انا ودي اتعلم البرمجه لكن الوقت ما يسمح
بالنسبه لي اعرف ابرمج برامج على قد الحال مو كبيره ولا توصل لموقع :P

تحياتي






__________________
الـكواسر | لـلمراسله
الكواسر متواجد حالياً   قديم 06-02-2008, 02:55 AM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Apr 2006-
#8 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة ALMimoni مشاهدة المشاركة
السلام عليكم
شكرا اخوي Nadorino

هذا كود بنفس الفكرة لكن بشكل مختصر :

كود PHP:
$start=array_sum(explode(" ",microtime()));

//محتوى الصفحة

echo array_sum(explode(" ",microtime()))-$start
نعم طريقة مختصرة في php 4 ولكن يوجد اختصار اكثر في php 5 كما تفضل الأخ هيلابي
بارك الله فيك على الاضافة الجميلة






عبد الواحد البشيري غير متواجد حالياً   قديم 06-02-2008, 11:17 AM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Apr 2006-
#9 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة الكواسر مشاهدة المشاركة
بارك الله فيكم
بصراحه موضوع مميز
انا ودي اتعلم البرمجه لكن الوقت ما يسمح
بالنسبه لي اعرف ابرمج برامج على قد الحال مو كبيره ولا توصل لموقع :P

تحياتي
وفيك بارك اخي
تعلم تعلم ولو قليلا... مع الوقت تجد نفسك ماشاء الله






عبد الواحد البشيري غير متواجد حالياً   قديم 06-02-2008, 11:20 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Jan 2008-
#10 (permalink)  

شكرا






seastar غير متواجد حالياً   قديم 29-02-2008, 06:29 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Jan 2008-
#11 (permalink)  

شكرا
على الموضوع






seastar غير متواجد حالياً   قديم 29-02-2008, 06:31 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Feb 2008-
#12 (permalink)  

بارك الله فيكم
بصراحه موضوع مميز
وبجد تعلمت منة كثيرا واشكرك بشدة وننتظر المزيد من التطورات

شكرا






Mr.NeNo غير متواجد حالياً   قديم 12-03-2008, 04:42 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: May 2007-
#13 (permalink)  

موضوع رائع وشرح مميز وجميل بارك الله فيك






__________________
-----------
|||||||||||||||||||||
المجموعة العربية للاستضافة والتصميم
www.hos6.com
منتدى المحبه
مجتمع حواري
www.almhba.com
abo naif غير متواجد حالياً   قديم 18-03-2008, 08:24 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Sep 2006-
#14 (permalink)  

زيادة في الإختصار:

بدءاً من PHP 5.0.0 تم إضافة بارامتر للدالة اسمه get_as_float من النوع boolean حيث يمكن تمريره للدالة للحصول علي القيمة بالثانية مجموعة علي القيمة بالمايكروثانية دون الحاجة الي فصلهما بدالة explode ثم اعادة جمعهما.

باختصار يمكن استخدام الدالة كالتالي:

كود PHP:
microtime(true
بدلاً من

كود PHP:
array_sum(explode(" ",microtime())) 






التصميم غير متواجد حالياً   قديم 21-03-2008, 07:43 PM
رد مع اقتباس
رد


أدوات الموضوع

تعليمات المشاركة
لا تستطيع كتابة مواضيع
لا تستطيع كتابة ردود
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
عروٍِضًٍِِ ـآلصحرٍِآءٍِ ـآسعـآر خيـآليهـٍِ shab souri الاستضافة المشتركة Shared Hosting 0 11-06-2007 03:08 PM
الصفحة الأم Master Page nothing4u ASP و ASP.NET 7 21-05-2007 12:46 AM
ممكن مساعدة في برمجة php بسيط انشاء الله!!! elkaser تطوير الويب 5 04-08-2004 12:27 PM
انشاء الصفحة: 0.123 ثانية izaq تطوير الويب 0 16-09-2003 02:06 PM
انشاء مسارات الموقع لنقول للزائر أنت الآن في هذه الصفحة haidar تطوير الويب 4 19-05-2002 01:39 AM


الساعة الآن: 03:41 AM بتوقيت المملكة العربية السعودية