السلام عليكم
العزيز سيزر .. كان من المفترض أن تضع لي الرابط في ملفي الشخصي لأرى هذا الموضوع .. حتى و إن لم أقدم المساعدة سوف اكون سعيدا بالتعرف على مثل هذه المشاكل
عادة ...وقت تنفيذ سكربتات الـ PHP تستغرق اقل من ثانية من البداية إلى الانتهاء .. احيانا .. في بعض عمليات الصيانة الطويلة (مثل تنصيب او إزالة ستايل منتدى في بلتن) ربما تستغرق وقتا اطول و تزيد عن الحد المسموح المخصص في السيرفر... ا لذلك يلجأ مطورو في بلتن إلى عمل (ريفريش) تلقائي للصفحة بعد إكمالها جزءا من العمل .. و بالتأكيد لاحظت ذلك بنفسك مثلا عند ترقية المنتدى (في النسخ الأقدم من 4.1) أو استيراد الستايل الرئيسي أو عملية إعادة بناء قاعدة بيانات البحث
الريفريش التلقائي .. يتيح التغلب على مشكلة (الحد المسموح لوقت تنفيذ سكربت PHP) .. و هذا الحد المسموح يكون عادة (30 ثانية) بصورة قياسية .... لأن السكربتات عادة (مثل سكربت فتح الموضوع showthread.php) يستغرق وقتا أقل من هذا بكثير (أقل من ثانية في الحالات القياسية)
لماذا يستغرق سكربت الـ بي أتش بي وقتا طويلا في التنفيذ بحيث يعبر الحد المسموح ؟ هذا له اسباب
1- ضعف موارد السيرفر (الـ RAM) و الـ CPU) ـ
2- العملية التي يجريها السكربت صحيحة .. و لكنها طويلة ، مثلا استيراد ستايل رئيسي في منتدى في بلتن، او عملية إعادة بناء البحث .. إلخ
3- هنالك مشكلة في السكربت تجعله يدخل في ما يسمى Dead lock .. بتعبيرنا الدارج (يعلق) و هذه الحالة ملاحظة في برامج الويندوز .. حيث يكون البرنامج غير قابل للاستجابة بسبب مشكلة معينة فيه او بسبب ظرف طارئ و لا يكون الحل سوى إجبار البرنامج على التوقف،
في الـ PHP .. إجبار السكربت على التوقف يكون من خلال وضع اعداد (الحد المسموح لأعلى وقت تنفيذ في PHP) .. و هو عادة يتم إعداده داخل ملف الـ PHP.ini .. بهذه الصورة:
max_execution_time = 30
و هذا يعني إن اطول وقت ممكن أن يمضيه السكربت في العمل هو 30 ثانية
بالنسبة إلى مشكلتك (اعرف إنها حلت الان) ..
الاسباب تكون واحدة من الاسباب الثلاث التي ذكرتها أعلاه .. مثلا هنالك مشكلة (خربطة) في الستايل او ما شابه تجعل السكربت (يعلق) دون أن ينتهي،
إذا لم يكن هذا السبب، ..و كان السبب الثاني، (العملية صحيحة و لكنها تستغرق وقتا طويلا مثلا 60 ثانية) يمكنك زيادة الحد المسموح (إلى 100 ثانية مثلا) عبر تحرير ملف الـ PHP.ini في السيرفرات المخصصة
إذا كانت استضافتك من النووع share يمكنك تعديل هذه القيمة لمساحتك فقط، عبر طريقتين
1- إذا كانت الـ PHP تعمل كـ apache module يمكنك إضافة هذا السطر إلى ملف .htaccess
php_value max_execution_time 100
أما إذا كانت الـ PHP تعمل بنمط suPHP .. فيجب عليك خلق ملف نصي إسمه php.ini .. و وضعه في المجلد الرئيسي لمنتداك او موقعك(إذا لم يكن موجود اصلا).. و تجعله يحتوي على هذه السطر:
max_execution_time = 100
للزائر .. لمعرفة نمط عمل الـ PHP لمساحتك ، هل هي apache module او suPHP .. يمكنك مشاهدة ردي على
هذا الموضوع
أما إذا كانت المشكلة في السكربت نفسه أو فيما يتعامل معه بحيث يدخل في دورة مغلقه .. فلن تنفع زيادة الوقت المسموح على الأكثر .. و لكن تنفع إذا كان السبب هو الأول أم الثاني في النقاط أعلاه
أعرف إن مشكلتك تم حلها .. و لكن هذا الشرح لمن يدخل إلى الموضوع
تحياتي