PHP XMLRPC сервер без расширения
Я пытаюсь создать сценарий pingback для нашего сайта, однако 1&1 не имеет установленного расширения XMLRPC.
Существуют ли альтернативы созданию сценария pingback/trackback без использования этого расширения - и есть ли демоверсии?
2 ответа
phpxmlrpc
Старая реализация Php, и она, похоже, заброшена, но вы можете увидеть, как использовать ее для отправки пингбэков или получения их в этом посте.
Zend
В среде Zend есть чистая реализация PHP- клиента и сервера XML-RPC, вы можете использовать ее для вызова или реализации службы pingback, и она хорошо документирована. Если вы не хотите использовать полный фреймворк только в качестве библиотеки компонентов, просто загрузите фреймворк, извлеките из него lib/Zend в каталог и включите файл верхнего уровня компонента. (вы можете настроить автозагрузку для удобства)
Описание службы pingback здесь.
Если у вас есть эта настройка, вы можете перейти к этому посту блога для указателей на коды клиент / сервер, я приведу несколько примеров с классами Zend (в посте используется расширение xmlrpc)
Отправка пингбэков:
require_once 'Zend/XmlRpc/Client.php'; // path to the framework files
try {
$client = new Zend_XmlRpc_Client('<pingback service url>');
$client->call('pingback.ping', array('<source uri>', '<target uri>'));
} catch (Exception $e) {
// error handling
}
URL сервиса будет в заголовке http поста или в метатеге, описанном в документации pingback.
Пингбэк сервис скелет
class PingBackService {
public function ping($source, $target) {
$source_url = $source[0];
$target_url = $target[0];
// validate parameters here, see http://www.quietearth.us/articles/2006/10/30/Coding-your-own-blog-Pingback-in-php for pointers
return 'Pingback registered. May the force be with you';
}
}
require_once 'Zend/XmlRpc/Server.php';
try {
$server = new Zend_XmlRpc_Server();
$server->setClass('PingBackService', 'pingback');
echo $server->handle();
} catch (Exception $e) {
// handle errors
}
PEAR имеет пакет XML_RPC2, который реализует клиент и сервер XML-RPC в пользовательском пространстве PHP без какого-либо специального расширения.