【CakePHP2】SimplePieを使用する

ComposerでCakePHP2とSimplePieをインストールします。使用するレンタルサーバーはエックスサーバーです。Composerを使用するので、PHPは5.3.2以上のバージョンが必要です。Composerでのインストールは以前に書いたので、それに追加するカタチで書きます。

環境
PHP
7.0
CakePHP
2.10.1

composer.json 作成

SimplePieはPackagistで検索したところ、1.4.3が見つかったのでそちらを使用します。DebugKitも同時にインストールするので追加。完成したcomposer.jsonが下記です。

{
    "name": "my-app",
    "require": {
        "cakephp/cakephp": "2.10.*",
        "simplepie/simplepie": "1.4.3"
    },
    "require-dev": {
        "cakephp/debug_kit": "~2"
    },
    "extra": {
        "installer-paths": {
            "src/Plugin/{$name}/": ["type:cakephp-plugin"]
        }
    }
}

インストール、初期設定は【Composer, XAMPP】CakePHP2とDebugKitをインストールするで書きました。

SimplePie Feedを取得する

実際にCakePHPでSimplePieで使ってみます。

ExampleController
public function rss()
{
    $feed = new SimplePie();
    $feed->enable_cache(false);
    $feed->set_feed_url(''); // 取得したいサイトアドレス
    $feed->init();

    $data = [];
    foreach ($feed->get_items() as $tmp) {
        $data[] = array(
            'title' => $tmp->get_title(),
            'url' => $tmp->get_link(),
            'site' => $tmp->get_feed()->get_title(),
            'created' => $tmp->get_date('Y-m-d'),
        );
    }

    $this->Model->saveMany($data);
}

簡易ですが、これで更新情報を取得できます。SimplePieはキャッシュや複数サイトの取得などの細かい設定も可能です。

SSL エラーが発生

XAMPPからSSL化されたサイトのfeedを取得しようとした場合に、cURL error 60: SSL certificate problem: unable to get local issuer certificateというエラーが発生します。解決方法はphp.inicurl.canoticeに、XAMPP内にあるSSL証明書を指定します。

[curl]
; A default value for the CURLOPT_CAINFO option. This is required to be an
; absolute path.
curl.canotice = C:\xampp\apache\bin\curl-ca-bundle.crt

編集後、Apacheの再起動でエラーが解消されます。