قسمت دوم این سریال در مورد برنامه نویسی یک سرویس Amazon Proxy است. این صدای بلندتر از آنچه در واقع است به نظر می رسد ، زیرا پروکسی فقط یک اسکریپت PHP است. من می خواهم به مقاله قبلی بپردازم که توضیح می دهد که یک پروکسی آمازون در واقع برای چیست ، چگونه کار می کند ، و چگونه می توانیم به [APAتبلیغاتمحصولآمازون Amazon Product آدرس دهیم. قسمت سوم این سریال در مورد طرف مشتری و نحوه یابی آدرس پروکسی آمازون از وب سایت یا مقاله وردپرس است.
اکنون من یک وبلاگ نگار هستم و نه یک برنامه نویس افزونه وردپرس ، بنابراین لطفاً نگاهی بیندازید هیچ افزونه وردپرس به پایان رسید ، که شما فقط نیاز به نصب آن دارید. اگرچه این برنامه کاربردی خواهد بود ، اما به هیچ وجه کامل نیست و باید به عنوان چارچوبی برای تحقق پروکسی طبق عقاید خود عمل کند.
چه چیزی لازم است؟
دانش قبلی قسمت 1
درک اساسی HTML ، JavaScript ، Ajax و PHP
البته ، وبلاگ وردپرس خود یا وب سایت دیگری [19659008] یک جزء مشتری برای پروکسی آمازون – این قسمت 3 است
شناسه شریک آمازون و کلید دسترسی به محصول تبلیغاتی آمازون [دسترسیبهکلیددسترسیAPI
برنامه PHP AmaProx
من برنامه نویسی شی گرا را دوست دارم – جایی که معقول باشد. اما این کار به قدری "ساده" است که من آن را به صورت دسته ای برنامه ریزی می کنم. با این حال ، به خاطر شفافیت ، برنامه را به 9 مرحله پی در پی تقسیم می کنم که اکنون به صورت جداگانه در مورد آنها بحث می کنم. در پایان مقاله ، کل برنامه برای کپی کردن دوباره در یک قطعه می آید. در زیر فرض می شود که برنامه Proxy Amazon نام دارد amaprox.php و در فهرست amaprox در زیر فهرست خانه اصلی قرار دارد. این همچنین می تواند با WordPress یا دایرکتوری موجود در پوشه تم خود یا تحت wp-content انجام شود.
I. تعاریف
<؟ پی اچ پی
$ access_key_id = "ABCDEFGHIJKLMNO"؛
$ secret_key = "AbCdEfGhIjKlMnOpQrStUvWxYz"؛
$ Associate_tag = "wwwmeasite-21"؛
$ endpoint = "webservice.amazon.de"؛
$ uri = "/ آنکا / xml"؛
$ bers_group = "بزرگ"؛
$ cachefolder = "حافظه نهان"؛
$ amaprox_homeURL = "https://www.my-site.com/amaprox"؛ موفق19659016 погледи اینجا ما متغیرهای متغیر اسکریپت را تعریف می کنیم. در ابتدا ، دو کلید API تبلیغات محصول آمازون وجود دارد ، و $ Associate_tag چیزی غیر از ID Partner ID نیست. البته شما باید کلیدهای خود را به جای متغیرهایی در من وارد کنید. $ endpoint و $ uri ممکن است برای آمازون آلمان باقی بماند ، و [پاسخ] $ result_group برای یک بار بزرگ به خوبی ثبت شده است. پوشه cachefolder فهرست زیر فهرست برنامه AmaProx است که در آن تصاویر محصول به طور موقت ریخته می شود. و $ amaprox_homeURL نشانی اینترنتی دایرکتوری برنامه AmaProx است. البته ، این نیز باید با شرایط شخصی خود سازگار باشد.
II. اگر (صادر (($ _ دریافت ["template"])) && خالی ($ _ GET ["template"])) پارامترها را بگیرید
بنابراین ، از دو پارامتر ، asin و الگو عبور می کند. مورد دوم اختیاری است و در صورت عدم وجود نشانه ، فرض می شود "Broadbox" . از سوی دیگر ، asin اجباری است ، فیلمنامه با سکوت خاتمه می یابد با بازگشت اگر [ مفقود شود [ asin .
در اینجا می توانید پتانسیل پیشرفت در فیلمنامه را ببینید. خطایی در استفاده از خطا وجود ندارد ، در صورت بروز خطا ، این برنامه به سادگی کنار می رود. به عنوان مثال ، ورودی های پرونده log نیز می توانند در اینجا نوشته شوند یا یک پیام خطا بازگردانده شود.
III. پوشه کش را پاک کنید
$ پرونده = glob ($ cachefolder. '/ *')؛
foreach ($ پرونده به عنوان $ پرونده) {
if (is_file (پرونده $) و& (زمان () - زمان فیلمبرداری (پرونده $)> 10)) {
لغو ارتباط ($ پرونده)؛
}
}
بعد ، پوشه حافظه نهان حذف می شود . برای این کار ، glob لیستی از پرونده های مشابه dir یا ls را در لینوکس دریافت می کند. سپس این لیست پرش می شود و هر پرونده قدیمی تر از 10 ثانیه با حذف حذف می شود . بنابراین فهرست کش همیشه پاک است.
اکنون در مورد درخواست به API تبلیغات محصول آمازون است. فرمول این درخواست بی اهمیت نیست ، زیرا پارامترها در کنار هم قرار می گیرند ، به موقع ، مرتب سازی ، کدگذاری و امضاء می شوند. خوشبختانه ، آمازون در حال حاضر این بخش از برنامه را در Scratchpad زیر در قطعه کد ارائه می دهد - من تقریبا (1) این کار را بر عهده گرفته ام: 1: 1.
V پرس و جو از آمازون و دریافت پاسخ
$ پاسخ =file_get_contents ($ درخواست_url)؛
تهیه فرم سؤال آمازون بسیار دشوار بود ، همان سؤال ساده درخواست API . این در یک خط برنامه با file_get_contents است.
اکنون کار واقعی می آید - از پاسخ API آمازون (نگاه کنید به Scratchpad) ، که در پاسخ [$ واقع شده است ، باید [1909015] را حل کنیم. ] که به ما علاقه مند است ابتدا پرونده خطا مورد بررسی قرار می گیرد که به هیچ وجه اطلاعاتی برنگردد ، سپس ساختار داده XML با استفاده از [194590016] توسط Simplexml_load_string به یک شی تبدیل می شود ، که کار با آن آسان است. تنها کاری که باید انجام دهید این است که بدانید کجا ایستاده است. و در اینجا دوباره به [Scratchpadآمازون کمک می کند. بیایید نمونه ای از قیمت را که می توانید در زیر مشاهده کنید:
مشابه توضیحات محصول ، یک مکان مشخص وجود دارد ، اما همیشه پر نمی شود. در این حالت ، این برنامه از خطوط ویژگی استفاده می کند ، که در یک لیست HTML جمع می شوند.
یک کلمه دیگر در مورد تصاویر. این برنامه با استفاده از MediumImage ، API آمازون اما اندازه های تصویر دیگری را نیز ارائه می دهد ، که در صورت لزوم توسط Scratchpad می توانید این برنامه را بصورت جداگانه تنظیم کنید. ما به تصاویر می چسبیم:
برای ذخیره تصویر در سرور خودمان ، ابتدا نامی منحصر به فرد ایجاد می کنیم . برای این کار ، این برنامه از Request-ID استفاده می کند ، که آمازون به طور واضح برای هر تماس API اختصاص می دهد و ما قبلاً از داده های تحت $ ama_id حل کرده ایم. برای بازیابی MediumImage از طریق اینترنت ، ما از توابع PHP PHP استفاده می کنیم ، که می تواند چنین دسترسی از راه دور را کنترل کند و همچنین آنها را به زیبایی ذخیره کند. پس از آن ، تصویر در پوشه حافظه نهان و $ mediumImg به پرونده اشاره دارد.
اکنون ما تمام داده ها و تصویر را در اختیار داریم و می توانیم هر دو را برای بازگشت به مشتری آماده کنیم. Proxy Amazon یک قطعه کد HTML ایجاد می کند ، که مشتری می تواند مستقیماً به وب سایت تزریق کند.
'؛
شکستن؛
به طور پیش فرض:
$ A = "http://blog.helmutkarger.de/"؛
}
پروکسی آمازون می تواند نه تنها یک نوع قطعه کد ، بلکه انواع مختلفی را ایجاد کند که با نام الگوی مشخص می شوند. بنابراین ، یک ساختار مورد [سوئیچ برای ارائه چندین قالب استفاده می شود. الگوهای زیر در دسترس است:
widebox : این یک آگهی کامل تبلیغاتی با تصویر ، عنوان ، قیمت و توضیحات محصول است
smallbox : این الگو هنوز ایجاد نشده است
پیوند : یک نوار عنوان ساده با پیوندها و مرزها
هنوز هم فضای اضافی در اینجا وجود دارد عملکرد همیشه یکسان است ، یک متغیر $ a با استفاده از متن HTML پر شده است داده هایی که در بالا از ساختار XML حل کردیم. و یک ظاهر طراحی شده کوچک گنجانده شده است. نکته مهم این است که [ پیوند تصویر به فهرست حافظه نهان پروکسی ها انجام می شود و به آمازون نیست .
ما یک قطعه کد HTML را بر اساس نام الگو و داده های آمازون ایجاد کردیم. این تنها نیاز به بازگشت به مشتری تماس گیرنده دارد. این بسیار ساده است ، ما یک سرصفحه مناسب تعریف می کنیم و قطعه کد را از طریق echo صادر می کنیم.
کد کامل
برای کسانی که می خواهند کد PHP AmaProx را کپی کنند ، دوباره در اینجا آمده است. قطعه:
البته ، دامنه و احتمالاً فهرست باید تطبیق داده شود. سپس به نظر بسیار شبیه به این تصویر است.
یا در واقعیت با پیشرفت هایی وجود دارد (به زیر مراجعه کنید) پس چنین است:
پروکسی آمازون را بهبود ببخشید
همانطور که قبلاً نیز اشاره شد ، پروکسی آمازون ساختاری نسبتاً محتاطانه است تا آن را به روشنی روشن نگه دارد. در اینجا چند پیشنهاد در مورد چگونگی گسترش آن ارائه شده است:
خطای در استفاده: خطاهایی که رخ داده می توانند به یک پرونده log
اعلان نامه ارسال شوند ، برای مثال ، اگر یک محصول یا قیمت دیگر در دسترس نباشد