PHP - كيفية التحقق من إصدار البرنامج النصي

StackOverflow https://stackoverflow.com/questions/1652964

  •  22-07-2019
  •  | 
  •  

سؤال

لدي سيناريو صغير و ترغب في الكشف عن الإصدار النصي من المشرف تذييل الصفحة.على المشرف footer.php أنا وضعت هذا القانون.

<?php
  define('VERSION', '1.0');
  $fp = fopen("http://v.domain.com/version.txt", "r");
  while ($line = fgets($fp)) {
      $line;
      if (VERSION != $line) {
?>
<div id="upgrade">
<a href="http://domain.com/download/" target="_blank">Download a new version [<?php echo $line; ?>]</a>
</div>
<?php
      }
  }
?>

في version.txt فقط 1.0.1 و تعمل بشكل جيد مقارنة الإصدار.

المشكلة هنا موقع العميل سوف الحصول بطيء.كيفية إصلاح هذه المشكلة ؟

هل كانت مفيدة؟

المحلول

السبب في ذلك هو بطيء لأن الملقم قيد التشغيل الخاص بك رمز PHP وقد ضرب v.domain.com على HTTP و تحميل نسخة من version.txt.في حين أن هذا يحدث, PHP يجلس هناك في انتظار ذلك.

لماذا هذا جعل الصفحة الخاصة بك بأكملها بطيئة على الرغم من انها في تذييل ؟ لأن أباتشي سوف ذاكرة التخزين المؤقت إخراج صفحة PHP قليلا قبل البصق عليه إلى المتصفح.و حتى لو مسح المخزن المؤقت للإخراج ، وأحيانا المتصفح لا وهذا شيء لديك أي سيطرة على مدى.

يبدو أنك ترغب في الافراج عن بعض PHP القائمة على أداة ، السيارات-نسخة-تحقق في تذييل الصفحة ، صحيح ؟

إذا كان هناك بعض المشاكل مع القيام بذلك الطريقة التي كنت تفعل ذلك:

  1. ليس هناك حاجة إلى التحقق من إصدار كل وقت تحميل الصفحة الخاصة بك.حفظ آخر موعد يمكنك التحقق من مكان ما ، فقط التحقق مرة أخرى ___ أيام.(نأمل أن كنت تفعل هذا مجرد قطع من مثال للبساطة)

  2. قراءة الملفات من ملقم آخر هو فكرة سيئة.كما أنك تعاني الآن, يمكن أن يسبب تباطؤ إذا كان الخاص بك v.domain.com يحصل مشغول.إذا كان يذهب إلى أسفل ، ثم PHP الخاص بك وقتا أطول لأنه في انتظار المهلة.

أفضل طريقة للقيام بذلك سيكون من خلال جافا سكريبت.بعد يتم تحميل الصفحة الخاصة بك, سيكون لديك وظيفة جافا سكريبت يستخدم اياكس.إذا كنت غير مألوف مع جافا سكريبت على الرغم من يمكن أن يكون هناك قليلا من منحنى التعلم ، ولكن هذه هي الطريقة المثلى للتعامل مع الوضع الخاص بك.

نصائح أخرى

إذا كان الملف هو مجرد رقم الإصدار ثم أود أن أقترح محاولة:

file_get_contents ()

$version = file_get_contents('http://wwww.example.com');
if (VERSION != trim($version)) {
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top