رفتن به مطلب

کاهش سرعت هنگام استفاده از Api دریافت کننده اطلاعات سینمایی


پست های پیشنهاد شده

سلام دوستان . 

من از یک api به نام omdbapi اطلاعات imdb هر فیلم و سریال رو دریافت میکنم . 

برای انجام این کار از فانکشن file_get_contents استفاده کردم و اطلاعات رو به خوبی تونستم دریافت بکنم .

ob_start();
$id = $_POST["id"];
$url = file_get_contents('http://www.omdbapi.com/?i=&apikey');
$data = json_decode($url, true);
ob_end_clean();
ob_end_flush(); 

 

اما پس از دریافت اطلاعات متاسفانه به دلیل تعداد درخواست ها برای هر پست ، سرعت لود ایندکس به شدت افت میکنه میخواستم ببینم آیا راهی هستش که بشه این کاهش سرعت لود رو از شرش خلاص شد و یاحداقل بهینه سازیش کرد . 

با سپاس از شما . 

 

 

 

ویرایش شده توسط ariux
لینک به ارسال

درود بر شما . این کد هنگام لود سایت اجرا میشه . در واقع این کد اطلاعات رو از سایت منبع دریافت و در سایت مقصد به نمایش میذاره ، مشکلی البته در نمایش نیست اما نمیدونم دلیل لود سنگین اون چی هستش . البته این کد در لوپ وردپرس قرار میگیره و توسط یه متاباکس برای هر پست ای دی مخصوص به هر فیلم رو که همانند ای دی imdb هستش دریافت میکنه . خودم فکر میکنم برای هر پست یک زمانی نیاز داره تا اطلاعت رو دریافت بکنه اما برای مثال اگر 15 پست در صفحه نمایش داده بشه دیگه نباید 15 برابر سرعت لود صفحه کاهش پیدا بکنه .

لینک به ارسال
در 13 دقیقه قبل، ariux گفته است :

درود بر شما . این کد هنگام لود سایت اجرا میشه . در واقع این کد اطلاعات رو از سایت منبع دریافت و در سایت مقصد به نمایش میذاره ، مشکلی البته در نمایش نیست اما نمیدونم دلیل لود سنگین اون چی هستش . البته این کد در لوپ وردپرس قرار میگیره و توسط یه متاباکس برای هر پست ای دی مخصوص به هر فیلم رو که همانند ای دی imdb هستش دریافت میکنه . خودم فکر میکنم برای هر پست یک زمانی نیاز داره تا اطلاعت رو دریافت بکنه اما برای مثال اگر 15 پست در صفحه نمایش داده بشه دیگه نباید 15 برابر سرعت لود صفحه کاهش پیدا بکنه .

خوب دیگه اشتباهه حرکت شما باید اطلاعات یه فیلم مشخص رو که گرفتید اقدام به سیو اطلاعات داخل دیتابیس سایت کنید که دیگه موقع هر بار لود اطلاعات رو از API دریافت نکنه.

قطعا ارسال 10 تا 15 درخواست HTTP موقع لود صفحه سایت باعث کندی لود میشه.

لینک به ارسال

ممنون از شما ، امکان انجام چنین کاری رو ممکنه به صورت یک آموزش برای بنده ارسال کنید . با سپاس از شما . 

لینک به ارسال
در 43 دقیقه قبل، ariux گفته است :

ممنون از شما ، امکان انجام چنین کاری رو ممکنه به صورت یک آموزش برای بنده ارسال کنید . با سپاس از شما . 

یه کد به عنوان نمونه براتون آماده کردم.

if(empty($imdb = get_post_meta($post->ID, '_imdb', true))) {
	
	$json = @file_get_contents('http://www.omdbapi.com/?i=&apikey');
	
	if($json !== false) {
		
		$imdb = json_decode($json, true);
		
		update_post_meta($post->ID, '_imdb', $imdb);
		
	}
	
}

if(isset($imdb['Title']))
	echo $imdb['Title']; // Print Movie Title

 

پ.ن : کد باید داخل حلقه استفاده بشه.

 

موفق باشید

لینک به ارسال

درود دگربار 

ببخشید دوباره مزاحم میشم ، در آغاز باید بابت کدی که در اختیارم گذاشتید تشکر کنم ، مشکل سرعت رفع شد اما مشکلی دیگر پدید آمد و اون این هستش که برای مثال وقتی من اطلاعات یک پست رو از Api دریافت میکنم و به نمایش میگذارم  پس از مثلأ تغییر ای دی درون متاباکس دیگه اطلاعات اون پست تغییر نمیکنه و همان اطلاعت قبلی که ثبت شده رو بار دیگر به نمایش میگذاره ، آیا راهی هست که متای پست رو با تغییر این متاباکس هم آپدیت کنیم . درست مثل اتفاقی که با همون متابکس میفته و همیشه امکان ویرایش ، آپدیت و به نمایش گذاشتن اطلاعاتش وجود داره . 

 

این کدی هست که من استفاده میکنم 

 

$imdbid = get_post_meta( get_the_ID(), '_imdbid', true ); // my custom metabox declaration
if(empty($imdb = get_post_meta($post->ID, '_imdb', true))) {
echo $json = @file_get_contents('http://www.omdbapi.com/?i='.$imdbid.'&apikey=101010'); // using it here .
	if($json !== false) {
		$imdb = json_decode($json, true);
		update_post_meta($post->ID, '_imdb', $imdb);
	}
}

ممنون از وقتی که میگذارید و پاسخ منِ تازه کار رو میدید . سپاس .

لینک به ارسال

درود مجدد

 

میتونید از Dynamic Metakey استفاده کنید.

if(!empty($imdbid = get_post_meta($post->ID, '_imdbid', true))) :

	if(empty($imdb = get_post_meta($post->ID, "_imdb_{$imdbid}", true))) {
		
		$json = @file_get_contents('http://www.omdbapi.com/?i='.$imdbid.'&apikey=101010'); 
		
		if($json !== false) {
			
			update_post_meta($post->ID, "_imdb_{$imdbid}", $json);
			
		}
		
	}
	
	echo $imdb;
	
endif;

 

پ.ن : چون من احساس کردم شما میخواید مستقیم مقدار دریافتی از API رو چاپ کنید اومدم مستقیم JSON رو داخل متا ذخیره و در پایان چاپ کردم.

 

موفق باشید

لینک به ارسال

جدأ ممنونم جناب مهران ، این کد به خوبی کار کرد و هر دو مشکل رو رفع کرد . باز هم تشکر میکنم بابات زمانی که گذاشتید . 

لینک به ارسال
در 6 دقیقه قبل، ariux گفته است :

جدأ ممنونم جناب مهران ، این کد به خوبی کار کرد و هر دو مشکل رو رفع کرد . باز هم تشکر میکنم بابات زمانی که گذاشتید . 

خدا رو شکر که مشکل حل شد.

پاینده باشید

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...