الخطوة 1 : YQL
قبل أن تبدأ بالتخزين المؤقت ، نحن بحاجة الى بعض البيانات للعمل مع YQL تقوم بجلب البيانات من مجموعة متنوعة من APIs .
فهي تقدم مجموعه من الجداول المختلفه مثل:
كيف تقوم بإستخدام YQL مع PHP :
وهناك مجموعة متنوعة من الأساليب التي تسمح لنا الاستعلام API YQL مع PHP. لهذا سنستخدم file_get_contents .
الخطوة الأولى هي أن تعلن لدينا SQL (من نوع) الاستعلام.
[html] $yql = "select * from twitter.search where q=’nettuts’";[/html]
والأن نقوم بإعداد المسار إلى YQL.
[html] $query = "http://query.yahooapis.com/v1/public/yql?q=";$query .= urlencode($yql);
$query .= "&format=json&env=store://datatables.org/alltableswithkeys";
[/html]
الحصول على المحتويات
المتغير يسبقه $ عند الاستعلام، ويحتوي على مسار YQL الكامل. وسوف يعاد تمرير هذا المتغير الي file_get_contents PHP.
[/html]
عرض التويت:
دعونا الآن نعرض التويت ضمن قائمة غير مرتبة.
YQL يمكننا استخدامها لتصفية وتحديد بالضبط ما نريد لاستخراج من الملف.
<ul>
<?php
foreach($tweets->query->results->results as $item) {
echo ‘<li>’ . $item->text . ‘</li>’;
}
?>
</ul>
[/html]
الآن أن يتم تمثيل كل كائن في مجموعة،علي أنه $item ، و يمكننا الوصول إلى الخصائص التي نحتاجها.
الخطوة 2 : التخزين المؤقت
نبدأ بإنشاء مجلد جديد داخل جذر مشروعنا، اسمه cash.,ونحدد مساره ، بغض النظر عما إذا كان أنشأ أو لا.
[html] $cache = dirname(__FILE__) . ‘/cache/nettutsTweets.txt’;[/html]
لاحظ أننا حتى الآن لم نقم بإنشاء الملف NettutsTweets.txt. PHP ! والأن نفتح الملف file_get_contents، بـ fopen
[html] …$tweets = file_get_contents($query, true);
// cache data
$cachefile = fopen($cache, ‘wb’);
fwrite($cachefile, $tweets);
fclose($cachefile);
[/html]
PHPتقوم بتسهيل هذه العمليه افتح ملف الـ $cache ولو الملف كان غير موجود سوف يقوم بعمله.
[html] $cachefile = fopen($cache, ‘wb’);واكتب المحتويات :
[html] fwrite($cachefile, $tweets);
[/html]
والأن قم بالإغلاق :
[html] fclose($cachefile);[/html]
والأن للتحقق من الوقت :
[html] if ( !file_exists($cache) || filemtime($cache) < ( time() – 10800 ) )[/html]
وهذا هو الكود النهائي
[/html]
$cache = dirname(__FILE__) . ‘/cache/nettutsTweets.txt’;
if ( !file_exists($cache) || filemtime($cache) < ( time() – 10800 ) ) {
$yql = “select * from twitter.search where q=’nettuts’”;
$query = “http://query.yahooapis.com/v1/public/yql?q=”;
$query .= urlencode($yql);
$query .= “&format=json&env=store://datatables.org/alltableswithkeys”;
$tweets = file_get_contents($query, true);
// cache data
$cachefile = fopen($cache, ‘wb’);
fwrite($cachefile, $tweets);
fclose($cachefile);
} else {
// We already have local cache. Let’s use that instead.
$tweets = file_get_contents($cache);
}
$tweets = json_decode($tweets);
?>
[/html]
خطوة 3 : التعبيرات العاديه
PHP توفر مجموعة متنوعة من الوظائف المفيدة للعمل مع التعبيرات العادية.
وهناك نوعين من العبارات نريد تغطيهم وهما @usernames وهذه تغطي twitter.com/username و urlsوتغطي anchor tags
وهذا الكود يتيح لك اضافة قيم متعدده داخل الداله:
‘/(http:\/\/.+?)(\s|$)/i’ => ‘<a href="$1">$1</a>’,
‘/@([\w\d_-]+)/’ => ‘<a href="http://twitter.com\/$1">@$1</a>’
);
[/html]