فواصل

YQL والتخزين المؤقت وأشكال التعبير العادية

الخطوة 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] $tweets = file_get_contents($query, true);
[/html]

عرض التويت:

دعونا الآن نعرض التويت ضمن قائمة غير مرتبة.
YQL يمكننا استخدامها لتصفية وتحديد بالضبط ما نريد لاستخراج من الملف.

[html] view plaincopy to clipboardprint?
<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
وهذا الكود يتيح لك اضافة قيم متعدده داخل الداله:

[html] $patterns = array(
‘/(http:\/\/.+?)(\s|$)/i’ => ‘<a href="$1">$1</a>’,
‘/@([\w\d_-]+)/’ => ‘<a href="http://twitter.com\/$1">@$1</a>’
);
[/html]

مقالات ذات صلة

اضف رد