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 لینک به ارسال
پست های پیشنهاد شده
لطفا برای ارسال دیدگاه وارد شوید
شما بعد از اینکه وارد حساب کاربری خود شدید می توانید دیدگاهی ارسال کنید
ورود به حساب کاربری