مشکل در استخراج json از آدرس خارجی (External URL)

سلام دوستان

در یک کد php نیاز دارم که با رفرش خودکار صفحه، اطلاعات یک آدرس json مرتبا گرفته شده و اطلاعات آن استخراج شود منتهی مشکلی که جدیدا با آن روبرو شده ام این هست که در برخی مواقع که جدیدا خیلی زیاد شده، این استخراج اطلاعات خیلی طول می کشد و بعضا با خطای timeout روبرو می شوم.

نهایتا کدها را آنقدر مختصر کردم تا فقط json مربوطه گرفته شود و هیچ کاری هم انجام ندهد منتهی باز هم آن مشکل پا برجا هست.

روی چند سرور و نسخه های مختلف php هم تست کردم ولی باز هم مشکل پابرجاست.

کد مختصر شده رو میذارم اگه ممکنه دوستان راهنمایی کنند.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="refresh" content="5" />
<meta http-equiv='Content-Language' content='fa' />
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<title>Untitled 1</title>
</head>

<body>

<?php
$link = 'آدرس json api';

$ch = curl_init($link);
curl_setopt($ch, CURLOPT_URL, $link);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
$json = json_decode($result);
?>

</body>

</html>
برچسب ها:
پرسیده شده در: 1 سال قبل
آمار بازدید: 432
0

برای دریافت اطلاعات در هر وضعیتی از یک سرویس خارجی باید به چندتا نکته توجه داشت:

۱) سرویس خارجی ای که قصد دارید از آن اطلاعات را استخراج کنید باید در دسترس باشد.

۲) زمان پردازش اطلاعات در سرویس خارجی باید کوتاه باشد و اگر پردازش آن طولانی مدت است باید زمان Timeout را در پروژه PHP‌ خود افزایش دهید که برای اینکار می توانید تکه کد زیر را به کدهای خود اضافه کنید:

<?php

$ch = curl_init('http://127.0.0.1/api');
curl_setopt($ch, CURLOPT_TIMEOUT, 2000); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2000);

$response = curl_exec($ch);

if ($response === false) {
     $info = curl_getinfo($ch);

    if ($info['http_code'] === 0) {
         // timeout
     } 
} 

دو متغییر CURLOPT_TIMEOUT و CURLOPT_CONNECTTIMEOUT برای افزایش زمان پردازش و دریافت اطلاعات از آدرس API مورد استفاده قرار می گیرند.

ارسال شده در: 1 سال قبل
masoudsalehi (1725)
بیش از ۲ سال عضویت در روکسو بیش از ۲ سال عضویت در روکسو دارای 1000 کارما دارای 1000 کارما نظرات دریافتی:‌ بیش از 50 نظرات دریافتی:‌ بیش از 50 دارای 25 پاسخ صحیح دارای 25 پاسخ صحیح ارسال کننده پاسخ با 25 رای ارسال کننده پاسخ با 25 رای
متشکرم ممنون از راهنمایی تون. پس از بررسی های زیاد متوجه شدم که مشکل پیش آمده به خاطر محدود شدن ترافیک سرورهای خارجی است. - lotfian85 در 1 سال قبل
جهت ارسال پاسخ ابتدا عضو سایت شوید.