السلام عليكم ورحمة الله وبركاته
بسم الله الرحمن الرحيم
لو عندك برنامج و تبي الناس يتسخدمونه بدون مشاكل او حتى لو راح تستخدمه في موقعك و زوار موقعك كثيرين والبرنامج هذا يستخدم قواعد البيانات راح يكون فيه ضغط كبير على الموقع وعلى السيرفر و راح يكون الموقع بطئ وراح تكون مشاكل في السيرفر . ودك تروح هالمشاكل كلها ؟
مافيه مشكلة الحل عندي , طبعا الحل مسروق من موقع ثاني وهو عبارة عن دالة لكن راح أشرحها شرح وافي ان شاء الله .
اول شي راح نعرف المجلدات اللي راح نحط الملفات فيه و التصاريح وكل شي .
كود:
/www/htdocs/mysite (مجلد الملفات)
-- / static_html (المكان اللي راح نسوي في ملفات ال HTML )
/ static_genenerator (المكان اللي راح بكون في ملفات ال php)
هذا الكود اللي راح أشرحه بدون الكود الاصلي
كود PHP:
<?php
$url = "http://www.mysite.com";
$sourcepage = "$url/static_generator/tutorial_index.php";
$tempfilename = "/tmp/temp_tutorials.html";
$targetfilename = "/www/htdocs/mysite/static_html/tutorial_index.html";
if (!$dynamic_source) {
echo "<strong>Unable to load $sourcepage
- Static page! Update Failed!</strong>";
exit();
}
$htmldata = fread($dynamic_source, 1024*1024);
fclose($dynamic_source);
$tempfile = fopen($tempfilename, 'w');
if (!$tempfile) {
echo"<strong>Unable to open temporary file $tempfilename for writing!
Static page update aborted!</strong>";
exit();
}
fwrite($tempfile, $htmldata);
fclose($tempfile);
copy($tempfilename, $targetfilename);
unlink($tempfilename);
echo "<strong>Tutorial Index Updated!</strong>";
?>
الشرح:
كود PHP:
$url = "http://www.mysite.com";
$sourcepage = "$url/static_generator/tutorial_index.php";
$tempfilename = "/tmp/temp_tutorials.html";
$targetfilename = "/www/htdocs/mysite/static_html/tutorial_index.html";
$url : المتغير اللي تكتب اسم الموقع بدون علامة / في نهاية العنوان.
$sourcepage : ملف ال php اللي فيه الاوامر .
$tempfilename : هذا الملف راح يكون للي راح نسويه بال Corn Jobs راح يسوي الملف و يحذفه تلقائي .
$tragetfilename : هذا الملف النهائي اللي راح يطلع للزوار و تراح يتحدث على حسب اللي انت تحدده في ال Corn Jobs من لوحة التحكم .
كود PHP:
$dynamic_source = fopen($sourcepage, 'r');
هذا المتغير عشان تفتح الملف الموجود في المتغير $sourcepage للقراءة بس.
كود PHP:
if(!$dynamic_source){
echo "<strong>Unable to load $sourcepage
- Static page! Update Failed!</strong>";
exit();
}
هذا الكود الشرطي يبن لنا اذا ما فتحت الملف للقراءة يطلع لك خطأ
كود PHP:
$htmldata = fread($dynamic_source, 1024*1024);
fclose($dynamic_source);
$tempfile = fopen($tempfilename, 'w');
$htmldata : هذا المتغير يقرا لك المتغير $dynamic_source عبر دالة fread .
دالة fclose هذي تسكر لك الملف و تتعامل مع متغير $tempfile .
$tempfile : هذا راح يفتح متغير $tempfilename و يقراه و هو اللي راح يتعامل معه.
كود PHP:
if(!$tempfile){
echo"<strong>Unable to open temporary file $tempfilename for writing!
Static page update aborted!</strong>";
exit();
}
هذا الكود الشرطي يتأكد من ان المتغير $tempfile تم فتحه بشكل ممتاز واذا ما فتح بشكل صحيح يطلع لك خطأ.
كود PHP:
fwrite($tempfile, $htmldata);
fclose($tempfile);
هذا الكود يسوي لكم ملف جديد باللي موجود في المتغيرات $tempfile و $htmldata من اللي جبناه من المتغير $dunamic_source و السطر الثاني اللي راح يسكر متغير $tempfile عشاننا ما نبيها أكثر من كذا.
كود PHP:
copy($tempfilename, $targetfilename);
unlink($tempfilename);
echo "<strong>Tutorial Index Updated!</strong>";
الحين راح يروح الكود الى مثواه الاخير J أٌصد خلاص هذي اخر خطوة في الكود . ننسخ الموجود في $tempfilename الى المتغير $tragetfilename اللي عرفناها من قبل .
دالة unlink دالة كماليه تماما يعني عادي لو تحذفها .
ودالة الطباعة كذلك كمالية تبي تحطها او بكيفك ما راح تأثر.
الحين باقي الكود هذا الكود كامل اللي راح تشغله بال Corn
الدالة هي :
كود PHP:
<?php
//1 hour cron script
$url = "http://www.mysite.com";
function tutorial_index($url){
$sourcepage = "$url/static_generator/tutorial_index.php";
$tempfilename = "/tmp/temp_tutorials.html";
$targetfilename = "/www/htdocs/mysite/static_html/tutorial_index.html";
if (!$dynamic_source){
echo "<strong>Unable to load $sourcepage
- Static page! Update Failed!</strong>";
exit();
}
$htmldata = fread($dynamic_source, 1024*1024);
fclose($dynamic_source);
$tempfile = fopen($tempfilename, 'w');
if (!$tempfile) {
echo"<strong>Unable to open temporary file $tempfilename for writing!
Static page update aborted!</strong>";
exit();
}
fwrite($tempfile, $htmldata);
fclose($tempfile);
copy($tempfilename, $targetfilename);
unlink($tempfilename);
echo "<strong>Tutorial Index Updated!</strong>";
}
function user_tutorials($url){
$sourcepage = "$url/static_generator/user_tutorial_index.php";
$tempfilename = "/tmp/temp__user_tutorials.html";
$targetfilename = "/www/htdocs/mysite/static_html/user_tutorial_index.html";
if (!$dynamic_source){
echo "<strong>Unable to load $sourcepage
- Static page! Update Failed!</strong>";
exit();
}
$htmldata = fread($dynamic_source, 1024*1024);
fclose($dynamic_source);
$tempfile = fopen($tempfilename, 'w');
if (!$tempfile) {
echo"<strong>Unable to open temporary file $tempfilename for writing!
Static page update aborted!</strong>";
exit();
}
fwrite($tempfile, $htmldata);
fclose($tempfile);
copy($tempfilename, $targetfilename);
unlink($tempfilename);
echo "<strong>User Submitted Tutorial Index Updated!</strong>";
}
tutorial_index($url);
user_tutorials($url);
?>
نصيحة خل ال Corn كل نص ساعة او ساعة بالكثير عشان يكون التحديث سريع
و طبعا كل واحد و له طريقته في عمل الكود هذا شي عادي و مثل ما يقولون كل الطرق تؤدي الى روما
بعض الناس يقول ليه اسوي كذا ابي المعلومات تتحدث كلما دخل الزاير للموقع اقوله هذا اذا كان عندك ترافيك عالي طبعا راح تستخدم الطريقة اما اذا كان الترافيك عندك قليل راح تستخدم طريقتي .
وصل الله وبارك
وما ننتظر منكم الا الدعاء.
المحارب