Windows(IIS 8 + PHP 5.4)でスクリプトを実行することについて少し質問があります。以下のスクリプトを機能させようとしています。
<?php
class RadInfo {
private $db;
private $cfg;
private $dnas_data;
function __construct() {
$this->db = Com_DB::getInstance();
$this->cfg = new Config();
}
function openstats() {
$ch = curl_init($this->cfg->shoutcasthost . '/admin.cgi?sid=' . $this->cfg->shoutcastsid . '&mode=viewxml');
curl_setopt($ch, CURLOPT_PORT, $this->cfg->shoutcastport);
curl_setopt($ch, CURLOPT_USERAGENT, $this->cfg->shoutcastuagent);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, $this->cfg->shoutcastuser . ':' . $this->cfg->shoutcastpasswd);
$curl = curl_exec($ch);
curl_close($ch);
if ($curl) {
$xml = @simplexml_load_string($curl);
$dnas_data = array (
'CURRENTLISTENERS' => $xml->CURRENTLISTENERS,
'PEAKLISTENERS' => $xml->PEAKLISTENERS,
'MAXLISTENERS' => $xml->MAXLISTENERS,
'REPORTEDLISTENERS' => $xml->REPORTEDLISTENERS,
'AVERAGETIME' => $xml->AVERAGETIME,
'SERVERGENRE' => $xml->SERVERGENRE,
'SERVERURL' => $xml->SERVERURL,
'SERVERTITLE' => $xml->SERVERTITLE,
'SONGTITLE' => $xml->SONGTITLE,
'NEXTTITLE' => $xml->NEXTTITLE,
'SONGURL' => $xml->SONGURL,
'IRC' => $xml->IRC,
'ICQ' => $xml->ICQ,
'AIM' => $xml->AIM,
'STREAMHITS' => $xml->STREAMHITS,
'STREAMSTATUS' => $xml->STREAMSTATUS,
'BITRATE' => $xml->BITRATE,
'CONTENT' => $xml->CONTENT,
'VERSION' => $xml->VERSION,
);
if ($dnas_data['STREAMSTATUS'] == 1)
{
foreach ($xml->LISTENERS->LISTENER as $listener)
{
$sc_data['LISTENERS'][] = array(
'HOSTNAME' => $listener->HOSTNAME,
'USERAGENT' => $listener->USERAGENT,
'CONNECTTIME' => $listener->CONNECTTIME,
'POINTER' => $listener->POINTER,
'UID' => $listener->UID,
);
}
foreach ($xml->SONGHISTORY->SONG as $song)
{
$sc_data['SONGHISTORY'][] = array(
'PLAYEDAT' => $song->PLAYEDAT,
'TITLE' => $song->TITLE,
);
}
}
} else {
$dnas_data = array('ERROR' => 'Could not connect to dnas-server!');
}
}
function LoadServerTitle() {
return $this->dnas_data['STREAMTITLE'];
}
}
?>
スクリプトに変更を加えましたが、出力はこの時点で NULL のままです。
クラス/関数の考えを呼び出そうとしました:
$comcms->slim->get('/streamtitle', function() use($comcms) {
$comcms->jsonOutput($comcms->radinfo->LoadServerTitle());
});
と
$comcms->slim->get('/streamtitle', function() use($comcms) {
if ($comcms->radinfo->openstats()) {
$comcms->jsonOutput($comcms->radinfo->LoadServerTitle());
}
});
いくつかのオプションを試しましたが、うまくいきませんでした。cURL で最初の問題が発生しましたが、PHP がモジュールのロードに失敗したため、解決されました。
今、私は情報を得るのに問題があります。LoadServerTitle は NULL を示す出力を提供しますが、正しく動作させることはできません。$this->cfg の部分がデータベースに出てきます。
このスクリプトを機能させるためのアイデアを教えてください。これまで私を助けてくれた人々に感謝したい。