البرمجة

تحسين أداء PHP: فحص صلاحية الروابط وتحديثها في قاعدة البيانات

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

أولاً وقبل كل شيء، يفضل دائمًا تجنب استخدام دوال قديمة وغير مفيدة مثل mysql_، وبدلاً من ذلك يُفضل استخدام استعلامات معيارية مثل mysqli_ أو حتى الانتقال إلى PDO.

تعديلات يجب إجراؤها على الكود:

  1. تحديد الروابط وتكرارها:
php
// Retrieve list of URLs to check $sql = "SELECT product_id, link FROM link_check"; $result = $conn->query($sql); if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { $link = $row["link"]; $product_id = $row["product_id"]; // Function to check URLs $check_url_status = check_url($link); // Write back the results to the database $update_sql = "UPDATE link_check SET status = '$check_url_status' WHERE product_id = $product_id"; $conn->query($update_sql); echo "Product ID: $product_id, Link: $link, Status: $check_url_status
"
; } } else { echo "0 results"; }
  1. تعديل الدالة check_url:
php
function check_url($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec($ch); $headers = curl_getinfo($ch); curl_close($ch); // Update: Check if $headers is not empty before accessing 'http_code' return !empty($headers) ? $headers['http_code'] : 'N/A'; }

تأكد من تحديث جدول قاعدة البيانات ليتضمن حقلًا إضافيًا لتخزين حالة الرابط، مثل status.

بتطبيق هذه التعديلات، يجب أن تتمكن الآن من تكرار جميع الروابط، فحص حالتها، وكتابة النتائج إلى قاعدة البيانات.

المزيد من المعلومات

في محاولتك لبناء وظيفة PHP لفحص صلاحية الروابط، تظهر مهارتك في استرجاع الروابط من قاعدة البيانات واستخدام دالة لفحص حالة الرابط. ومع ذلك، يمكننا تحسين الكود لجعله أكثر فاعلية وتنظيمًا.

أولًا، قم بتعديل الكود لاستخدام استعلام واحد لاسترجاع جميع الروابط والمعلومات المتعلقة بها في مرة واحدة. هذا يقلل من التفاعل مع قاعدة البيانات ويحسن أداء التطبيق:

php
// Retrieve list of URLs to check $sql = "SELECT product_id, link FROM link_check"; $result = $conn->query($sql); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { $product_id = $row["product_id"]; $link = $row["link"]; echo "id: $product_id $link
"
; // Function to check URLs $check_url_status = check_url($link); // Update the status in the database $update_sql = "UPDATE link_check SET status = '$check_url_status' WHERE product_id = $product_id"; $update_result = $conn->query($update_sql); if ($update_result) { echo "Status updated successfully
"
; } else { echo "Error updating status: " . $conn->error . "
"
; } } } else { echo "0 results"; }

ثم، قم بتحسين دالة check_url لضمان استخدام التعامل مع الأخطاء وإدارتها بشكل أفضل. يمكنك استخدام curl_errno للتحقق من وجود أخطاء أثناء الاتصال:

php
// Function to check URLs function check_url($url) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec($ch); if ($data === false) { echo "cURL Error: " . curl_error($ch) . "
"
; return false; } $headers = curl_getinfo($ch); curl_close($ch); return $headers['http_code']; }

هذا التعديل يساعد في التعامل مع أخطاء cURL بشكل أفضل، مما يجعل تصحيح المشاكل أكثر فعالية.

باستخدام هذه التحسينات، يمكنك تحسين أداء تطبيقك وتجعل الكود أكثر فعالية ويسهل الصيانة.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر