ariux

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

12 پست در این موضوع قرار دارد

سلام دوستان . 

من از یک 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
0

به اشتراک گذاری این پست


لینک به پست

سلام و درود

 

این کدی که دادید چه موقع اجرا میشه؟

موقع لود سایت یا یه موقع دیگه؟

1

به اشتراک گذاری این پست


لینک به پست

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

0

به اشتراک گذاری این پست


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

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

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

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

1

به اشتراک گذاری این پست


لینک به پست

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

0

به اشتراک گذاری این پست


لینک به پست
در 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

 

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

 

موفق باشید

2

به اشتراک گذاری این پست


لینک به پست

سلام ، ممنونم لطف کردید . 

0

به اشتراک گذاری این پست


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

سلام ، ممنونم لطف کردید . 

خواهش میکنم.

موفق باشید

0

به اشتراک گذاری این پست


لینک به پست

درود دگربار 

ببخشید دوباره مزاحم میشم ، در آغاز باید بابت کدی که در اختیارم گذاشتید تشکر کنم ، مشکل سرعت رفع شد اما مشکلی دیگر پدید آمد و اون این هستش که برای مثال وقتی من اطلاعات یک پست رو از 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);
	}
}

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

0

به اشتراک گذاری این پست


لینک به پست

درود مجدد

 

میتونید از 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 رو داخل متا ذخیره و در پایان چاپ کردم.

 

موفق باشید

1

به اشتراک گذاری این پست


لینک به پست

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

0

به اشتراک گذاری این پست


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

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

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

پاینده باشید

1

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری