ariux 3 ارسال شده در اردیبهشت 97 گزارش بازنشر ارسال شده در اردیبهشت 97 (ویرایش شده) سلام دوستان . من از یک 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(); اما پس از دریافت اطلاعات متاسفانه به دلیل تعداد درخواست ها برای هر پست ، سرعت لود ایندکس به شدت افت میکنه میخواستم ببینم آیا راهی هستش که بشه این کاهش سرعت لود رو از شرش خلاص شد و یاحداقل بهینه سازیش کرد . با سپاس از شما . ویرایش شده اردیبهشت 97 توسط ariux نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در اردیبهشت 97 گزارش بازنشر ارسال شده در اردیبهشت 97 سلام و درود این کدی که دادید چه موقع اجرا میشه؟ موقع لود سایت یا یه موقع دیگه؟ 1 نقل قول لینک به ارسال
ariux 3 ارسال شده در اردیبهشت 97 مالک گزارش بازنشر ارسال شده در اردیبهشت 97 درود بر شما . این کد هنگام لود سایت اجرا میشه . در واقع این کد اطلاعات رو از سایت منبع دریافت و در سایت مقصد به نمایش میذاره ، مشکلی البته در نمایش نیست اما نمیدونم دلیل لود سنگین اون چی هستش . البته این کد در لوپ وردپرس قرار میگیره و توسط یه متاباکس برای هر پست ای دی مخصوص به هر فیلم رو که همانند ای دی imdb هستش دریافت میکنه . خودم فکر میکنم برای هر پست یک زمانی نیاز داره تا اطلاعت رو دریافت بکنه اما برای مثال اگر 15 پست در صفحه نمایش داده بشه دیگه نباید 15 برابر سرعت لود صفحه کاهش پیدا بکنه . نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در اردیبهشت 97 گزارش بازنشر ارسال شده در اردیبهشت 97 در 13 دقیقه قبل، ariux گفته است : درود بر شما . این کد هنگام لود سایت اجرا میشه . در واقع این کد اطلاعات رو از سایت منبع دریافت و در سایت مقصد به نمایش میذاره ، مشکلی البته در نمایش نیست اما نمیدونم دلیل لود سنگین اون چی هستش . البته این کد در لوپ وردپرس قرار میگیره و توسط یه متاباکس برای هر پست ای دی مخصوص به هر فیلم رو که همانند ای دی imdb هستش دریافت میکنه . خودم فکر میکنم برای هر پست یک زمانی نیاز داره تا اطلاعت رو دریافت بکنه اما برای مثال اگر 15 پست در صفحه نمایش داده بشه دیگه نباید 15 برابر سرعت لود صفحه کاهش پیدا بکنه . خوب دیگه اشتباهه حرکت شما باید اطلاعات یه فیلم مشخص رو که گرفتید اقدام به سیو اطلاعات داخل دیتابیس سایت کنید که دیگه موقع هر بار لود اطلاعات رو از API دریافت نکنه. قطعا ارسال 10 تا 15 درخواست HTTP موقع لود صفحه سایت باعث کندی لود میشه. 1 نقل قول لینک به ارسال
ariux 3 ارسال شده در اردیبهشت 97 مالک گزارش بازنشر ارسال شده در اردیبهشت 97 ممنون از شما ، امکان انجام چنین کاری رو ممکنه به صورت یک آموزش برای بنده ارسال کنید . با سپاس از شما . نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در اردیبهشت 97 گزارش بازنشر ارسال شده در اردیبهشت 97 در 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 نقل قول لینک به ارسال
ariux 3 ارسال شده در اردیبهشت 97 مالک گزارش بازنشر ارسال شده در اردیبهشت 97 سلام ، ممنونم لطف کردید . نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در اردیبهشت 97 گزارش بازنشر ارسال شده در اردیبهشت 97 در 2 ساعت قبل، ariux گفته است : سلام ، ممنونم لطف کردید . خواهش میکنم. موفق باشید نقل قول لینک به ارسال
ariux 3 ارسال شده در اردیبهشت 97 مالک گزارش بازنشر ارسال شده در اردیبهشت 97 درود دگربار ببخشید دوباره مزاحم میشم ، در آغاز باید بابت کدی که در اختیارم گذاشتید تشکر کنم ، مشکل سرعت رفع شد اما مشکلی دیگر پدید آمد و اون این هستش که برای مثال وقتی من اطلاعات یک پست رو از 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); } } ممنون از وقتی که میگذارید و پاسخ منِ تازه کار رو میدید . سپاس . نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در اردیبهشت 97 گزارش بازنشر ارسال شده در اردیبهشت 97 درود مجدد میتونید از 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 نقل قول لینک به ارسال
ariux 3 ارسال شده در اردیبهشت 97 مالک گزارش بازنشر ارسال شده در اردیبهشت 97 جدأ ممنونم جناب مهران ، این کد به خوبی کار کرد و هر دو مشکل رو رفع کرد . باز هم تشکر میکنم بابات زمانی که گذاشتید . نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در اردیبهشت 97 گزارش بازنشر ارسال شده در اردیبهشت 97 در 6 دقیقه قبل، ariux گفته است : جدأ ممنونم جناب مهران ، این کد به خوبی کار کرد و هر دو مشکل رو رفع کرد . باز هم تشکر میکنم بابات زمانی که گذاشتید . خدا رو شکر که مشکل حل شد. پاینده باشید 1 نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .