قم بإنشاء ملف RSS مع فئة PHP
سؤال
أواجه بعض الصعوبة في الحصول على هذا البرنامج النصي للتنفيذ بشكل صحيح.
لا تقوم وظيفة Create_RSS بإنشاء ملف RSS عند استدعاء الدالة Remote updatestatus.
<?php
define("DB_HOST", "localhost");
define("DB_USER", "user");
define("DB_PASS", "pass");
define("DB_NAME", "db_test");
class updateService
{
function updateService()
{
$this->methodTable = array(
"updateStatus" => array(
"description" => "Retrieve RSS Info",
"arguments" => array("info"),
"access" => "remote"
),
"create_rss" => array(
"description" => "Create RSS",
"arguments" => array("id"),
"access" => "private"
)
);
//Connect to MySQL and select database
$link = mysql_connect(DB_HOST, DB_USER, DB_PASS);
$db = mysql_select_db(DB_NAME);
}
/**
* Update Status
* @access remote
*/
//$info contains the integer site id...
function updateStatus($info)
{
create_rss(4);
}
function create_rss($id)
{
$xml = '<?xml version="1.0" encoding="ISO-8859-1" ?><rss version="2.0">' . "\r\n";
$xml .= "\t\t" . "<channel>" . "\n\r";
$xml .= "\t\t\t" . "<title>Website Feed</title>" . "\n\r";
$xml .= "\t\t\t" . "<link>http://website.com</link>" . "\n\r";
$xml .= "\t\t\t" . "<description>Website Design</description>" . "\n\r";
switch ($id)
{
case 1:
$site_name = 'MyTestWebsite';
$site_link = 'http://www.website.com';
break;
case 2:
$site_name = 'TestWebsite';
$link = 'http://website.com/?q=1&g=2';
$site_link = htmlspecialchars($link);
break;
default:
break;
}
$sql = "SELECT * FROM table1 WHERE site_id = '$id'
LIMIT 30";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
$timestamp = $row['timestamp'];
$xml .= "\t\t" . "<item>" . "\n\r";
$xml .= "\t\t\t" . "<title>" . $site_name . " Activity</title>" . "\n\r";
$xml .= "\t\t\t" . "<link>" . $site_link . "</link>" . "\n\r";
$xml .= "\t\t\t" . '<description><![CDATA[<p><b>Timestamp: ' . $timestamp . '</b></p>]]>' . "\n\r";
$xml .= "\t\t" . "</item>" . "\n\r";
}
$xml .= "\t" . "</channel>" . "\n\r" . "</rss>";
//create xml file
$rssfile_path = 'feed/' . $site_name . '.xml';
chmod($rssfile_path, 0777);
$file = $_SERVER['DOCUMENT_ROOT'] . $rssfile_path;
if (!$file_handle = fopen($file, "w"))
{
//print "<br>Cannot open XML document:<br>";
}
elseif (!fwrite($file_handle, $xml))
{
//print "<br>Cannot write to XML document:<br>";
}
else
{
//print "<br>Successfully created XML document:<br>";
}
fclose($file_handle);
}
}
?>
المحلول 3
قد أكون مخطئًا ، لكنني أعتقد أن استدعاء وظيفة خاصة "create_rss" من وظيفة عن بُعد "updatestatus" لا يعيد أي شيء بسبب الأخطاء التي تم إنشاؤها بواسطة رمز كتابة الملف.
عندما قمت بفصل الكود إلى وظيفته عن بُعد ، عادت "غير محددة". لتنظيف الكود ، كتبت ببساطة عودة مشروطة. إليك مقتطف في نهاية الكود:
// SET RSS FILE VARIABLE
//linux : doc root = dirname
//windows : doc root = dirname/
$rss_feed_dir = $_SERVER['DOCUMENT_ROOT'] . '/feed/';
chmod($rss_feed_dir, 0777);
$file = $rss_feed_dir . $site_name . '.xml';
$file_handle = fopen($file, "w");
fwrite($file_handle, $xml);
fclose($file_handle);
return true;
نصائح أخرى
قد ترغب في إزالة // من السطور مع عبارات الطباعة: لقد علقت رسائل الخطأ الخاصة بك. إذا قمت بإزالتها ، قم بتشغيل البرنامج النصي مرة أخرى.
حدسي هو أنك تركت المُنشئ. وظيفتك:
function updateService() {
....
}
من المحتمل أن تقرأ:
function __construct() {
....
}
(في PHP ، يقوم المنشئ ليس احصل على نفس الاسم مثل فصله ، استخدم الاسم السحري __construct
في حين أن)
(راجع للشغل - لم أقرأ كل الرموز الخاصة بك ، قد تحصل على المزيد من الردود/bettre إذا بذلت المزيد من الجهد في تنسيقه بحيث يكون من السهل القراءة)