• ベストアンサー

php xml mysql  アクセスログ

phpでアクセスログをxmlデーターベースとして保存したいと思っているのですが アクセスログなんてデータベースとして作るものじゃないのでしょうか? <サイトの名前> <visiter> <IP></IP> <ブラウザ></ブラウザ> その他色々 </visiter> <IP></IP> <ブラウザ></ブラウザ> その他色々 </visiter> </サイトの名前> DomDocumentオブジェクトのappendChildなどを使って要素の追加などをして、javascript使ってグラフなどを表示したいと思っています。 こういうのはデータベースというのですか・・? 使っているサーバーがロリホップの105円プランなのでmysqlが使えないので、xmlで作ってみたいと考えました。 なんというか根本的に間違っているというか、効率が悪いというか、現実的ではないというかそんな感じがするのですがどうなのでしょうか・・ 回答よろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

アクセスログは順次出力なので、XMLで扱うのは非効率だと思います。 もう少し費用をかけてそれなりの環境を整えたほうがいいのでは? http://www.serverdb.info/pg/search.php?fw=CentOS&tg[]=4&tg[]=7&od[]=2&od[]=&od[]=&od[]=&kind=search&gp=rental-vps

westernedlocked
質問者

補足

順次出力・・・? XMLって何に向いているんですか? 105円のロリポップサーバーを使っているのですが、ログを取るなら何がオススメですか? mysqlは使えません(´Д`) というかmysqlも効率悪いんでしょうか?

関連するQ&A

  • php xml?mysql? アクセスログ

    phpでアクセスログをxmlデーターベースとして保存したいと思っているのですが アクセスログなんてデータベースとして作るものじゃないのでしょうか? <サイトの名前> <visiter> <IP></IP> <ブラウザ></ブラウザ> その他色々 </visiter> <IP></IP> <ブラウザ></ブラウザ> その他色々 </visiter> </サイトの名前> DomDocumentオブジェクトのappendChildなどを使って要素の追加などをして、javascript使ってグラフなどを表示したいと思っています。 こういうのはデータベースというのですか・・? 使っているサーバーがロリホップの105円プランなのでmysqlが使えないので、xmlで作ってみたいと考えました。 なんというか根本的に間違っているというか、効率が悪いというか、現実的ではないというかそんな感じがするのですがどうなのでしょうか・・ 回答よろしくおねがいします。

  • xmlファイルが生成されない

    <?php //DomDocumentを呼び出す $dom = new DomDocument('1.0','UTF-8'); //要素ノード[document]を追加 $document = $dom->appendChild($dom->createElement('document')); //新しい要素をdocumentの子要素として挿入する $document->appendChild($dom->createElement('name','名前です')); $document->appendChild($dom->createElement('text','テキストです。')); //字下げや空白を考慮してきれいに整形した出力を行う $dom->formatOutput = true; //同階層にtest.xmlとして保存 $dom->save('test.xml'); //出力 echo $dom->saveXML(); ?> のように、同じディレクトリ内にXMLファイルを生成するphpプログラムを作成してみたのですが、 ブラウザからこのPHPファイルにアクセスしてもXMLファイルが作られません。どうすれば良いのでしょうか。 なにかphp,apache等の設定をしてないからでしょうか。 よろしくお願いします。

    • 締切済み
    • PHP
  • [PHP+XML]PHPで動的に出力するXMLをどのようにして読み込めばいいでしょうか?

    こんにちは、どうしても解決ができなくて困っています。 お助け願います。 DBからデータを取得し成形するなどした結果をXMLで出力できるようにPHPを用意しました。 ブラウザから確認でき、XMLをソース表示しても問題ありません。 次にこれを読み込むPHPを書いています。 simplexml_load_fileなどでXMLファイルを開くことはこれまでにもやっていたので、直接XMLファイル名を記述するところに用意したPHPを指定しました。 結果はエラー。 いろいろ検証した結果、PHPがアクションする前にPHPファイルが開かれてしまっている感じ。 DOMDocumentのload()やloadXML()で読み込む方法もトライしましたが結果は同じ・・・。 根本的に間違ってますか? PHPから吐き出されるXMLを読み込むためにXMLファイルを記述するところにPHPスクリプトを指定すること自体が間違っているようにも思っています。 お手数をお掛けいたしますがお教え願います。

    • ベストアンサー
    • PHP
  • PHP+MySQLでXMLを作成し、それをいくつか連結したものを返す方

    PHP+MySQLでXMLを作成し、それをいくつか連結したものを返す方法を教えてください。 HTML ↓(1)httpリクエスト,パラメータ (2)main.php(XML化メイン処理) XMLデータ送信→ HTML ↑ ↑ ↑ ↓ ↓ ↓ (3)xml_1.php xml_2.php xml_3.php(XML生成子処理) ↑ ↑ ↑ ↓ ↓ ↓ DB (2)main.phpでHTMLから受け取ったコマンドを元に生成するXMLの取得を振り分ける。(switch文) (3)各phpでDBからデータを取得しXML形式にする。 (4)main.phpでそれぞれのXMLを連結し送信。 というのがやりたいことなんですけど、 ・SQLからデータを取得し、XMLにする方法 ・メイン処理でそれぞれを連結する方法 がわかりません。 main.php <?php function xml_main($cmd, &$xml ){ global $log4php,$con,$debugMode; $result = false; $dbErrMsg; // DB Open openDb(); dbErr(); // log4phpオブジェクト //$log4php = new log4php('log4php_xml.properties'); // トランザクション開始 mysql_query('BEGIN'); $log4php->debug('トランザクション開始'); /* try{ // 文字コード変換(ujis=EUC-JP) // TIPS デフォルトの文字コードがEUCだった場合は以下の二行を削除してください。 $sql = "SET NAMES utf8"; $result = @mysql_query($sql); } */ // XML Header生成 // コマンド毎の呼び出し switch($cmd){ case 0: xml_1.phpとxml_2.phpで生成したxmlを連結 break; case 1: xml_1.phpとxml_3.phpで生成したxmlを連結 break; case 2: xml_2.phpとxml_3.phpで生成したxmlを連結 break; default: break; } // XML基本情報タグ生成 // XML Footer生成 // DB Close closeDB(); } ?> xml_1.php <?php function xml_1($id,$member,$msg,&$xml){ //DBからデータを取得 //xmlを作成 } ?> という感じでやろうとしてるんですが。 xml_1.php xml_2.phpで文字列をreturnしてmain.phpでSimpleXMLで連結させるというのも方法として書いてあったんですが、 具体的なやり方がわかりません。 環境はPHP5.1 MySQL5です。

    • ベストアンサー
    • PHP
  • MySQL のログ出力方法について (Error 1130)

    MySQLのログについて質問です。 現在、MySQL Administratorを使用して、遠隔でデータベースサーバにログインしようとしたところ以下のようなエラーが発生しました。 ■エラー内容(クライアントに表示されたもの) MySQL Error Number 1130 Host 'host名' is not allowd to connect to this MySQL server ちなみに、このエラーはデータベースのアクセス権を付与する事で回避でき、無事にデータベースへ接続は出来たのですが、データベースサーバの方に、このようなアクセスしてきたログは残っていませんでした。 そこで、上記のようなエラーが発生した場合、サーバ側のログに出力させる事は可能でしょうか? ちなみに、/etc/my.confのログ設定内容は以下の通りになっています。 ■サーバ側のmy.confに記述してあるログ設定内容 log-error=/var/log/mysqld.log log=/var/log/mysqld.log mysqld.logは、オーナー、グループ共に「mysql」です。 Error Number 1045などは、アクセス時にパスワードが無いというログが、mysqld.logに出力されるのですが、Error Number 1130が残りません。 どうにかして、サーバ側でこのようなアクセスがあった事を確認する方法(ログの出力方法など)はありませんか? 是非とも、ご教示よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • アクセスログについて。

    アクセスログのことを教えてください。 アクセスログとはどういうものですか? 自分がインターネット内のどこのページを見ているかが全て相手に分かるものですか? もしAというサイトを見たとき、Aに行く前に見ていたB(Aのリンクが貼ってあった)ところまで分かるのですか? それともBの前に繋がっていたページや、全く繋がりの無いけど他に見ていたページや自分のブラウザかPCに残っている履歴を全て知られてしまうのですか? アクセスログを利用しているところには、こちらのどういう範囲まで知られてしまうのですか? よろしくお願いします。

  • VBSでXMLを操作したい

    現在Webアプリケーションの簡単なものを作成しています。 データベースはXMLで出来上がっているのでそれを使いたいのですが、入力フォームに入れてもらったデータをXMLに変換してXMLデータベースに追加、保存しようと思います。 一応フォームに入力したものをXMLデータとして出力までは考えられたのですが、既存のXMLを読み出す方法と追加する方法、保存する方法がよくわかりません。 よろしくお願いいたします。 <html> <head> <title>入力フォーム</title> <script type="text/vbscript"> <!-- Option Explicit dim xmldoc Sub window_onload() set xmldoc=createObject("MSXML2.DOMDocument") xmldoc.async=False xmldoc.loadXML("<?xml version='1.0'?><全体/>") End Sub Sub makeXml() dim myInfoElement,myDataElement,myDataText dim ret1,ret2,ret3,ret4 set ret1=xmldoc.createTextNode(vbCRLf) xmldoc.documentElement.appendChild(ret1) set myInfoElement=xmldoc.createElement("名簿") set ret2=xmldoc.createTextNode(vbCRLf) myInfoElement.appendChild(ret2) set myDataElement=xmldoc.createElement("名前") set myDataText=xmldoc.createTextNode(myForm.myName.value) myDataElement.SetAttribute "年",myForm.myAge.Value myDataElement.appendChild(myDataText) myInfoElement.appendChild(myDataElement) set ret3=xmldoc.createTextNode(vbCRLf) myInfoElement.appendChild(ret3) xmldoc.documentElement.appendChild(myInfoElement) set ret4=xmldoc.createTextNode(vbCRLf) xmldoc.documentElement.appendChild(ret4) myForm.xmlSource.value=xmldoc.xml End Sub --> </script> </head> <body> <form name="myForm"> 名前:<input type="text" size="30" name="myName"><br> 年:<input type="text" size="10" name="myAge"> <button onClick="makeXml()">XMLの作成</button><br> <textarea name="xmlSource" cols="60" rows="15"></textarea> </form> </body> </html>

  • XML DOMについて

    JavaScriptでDOMを使用して、xmlhttp.sendで指定のPHPファイルに送信しましたが、 PHP側で値を取得できません。 (PHP Ver.5.3.0) 以下、JavaScript var UserID="abc"; var Password="abc"; var xmlDoc = new ActiveXObject("Microsoft.XMLDom"); xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml","version=\"1.0\"")); var root = xmlDoc.createElement("xDoc"); xmlDoc.documentElement=root; var node_Item = xmlDoc.createElement("Command"); root.appendChild(node_Item); var node_UserID = xmlDoc.createElement("UserID"); node_UserID.appendChild(xmlDoc.createTextNode(UserID)), node_Item.appendChild(node_UserID); var node_Password = xmlDoc.createElement("Password"); node_Password.appendChild(xmlDoc.createTextNode(MDString(Password))), node_Item.appendChild(node_Password); var node_Sufix = xmlDoc.createElement("Sufix"); node_Sufix.appendChild(xmlDoc.createTextNode(Sufix)), node_Item.appendChild(node_Sufix); var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.open("post",topURL("main/Log.php"),false); xmlhttp.send(xmlDoc); 以下、Log.php <?php session_start(); $DEBUG_MODE=false; $xmlLogQ=$_SERVER['DOCUMENT_ROOT']."/test/temp/Request.xml"; $xml = new DOMDocument(); $xml->async=false; if (!$DEBUG_MODE) { if ($XML_LOG) { $xml->save($xmlLogQ); } } else { if ($XML_LOG) { $xml->load($xmlLogQ); } } $doc=$xml->documentElement; if ($xml->parseError.errorCode==0) { $xml = $node=$doc->selectSingleNode("Command/UserID"); if (!($node==null)) { $UserID=$node->text; $node=null; } $node=$doc->selectSingleNode("Command/Sufix"); if (!($node==null)) { $Sufix=$node->text; $node=null; } $node=$doc->selectSingleNode("Command/Password"); if (!($node==null)) { $Password=$node->text; $node=null; } } ?> 保存したXML上、<?xml version="1.0"?>以降書き込みできてません。 どの部分がおかしいか不明の為、申し訳ないですがご教授お願いします。

    • ベストアンサー
    • PHP
  • php経由のMySQL

    php経由で、サーバー上のMySQLにアクセスします。 その場合の、MySQLへの接続アカウントの処理は、どうするべきなのでしょうか? DBとのやり取りのコードは、サーバー上のphpファイルに書かれていますし、そのphpにアクセスしてデータをやり取りします。なので、MySQLへ接続する際のMySQLアカウント(ユーザー名とパスワード)が、php上に書かれています。 通常phpのコード自体は、ブラウザからは読めませんが、 アクセスできる場所にあるという時点で、セキュリティ上 問題があるのかなとも思います。 しかし、多くのサイトで、このような、webサーバー上のphpを通してMySQLにアクセスするのは、一般的な形だと思いますが、そのようなサイトでは、MySQLにアクセスするためのアカウントを、どのように管理しているのでしょうか? 当然、そのwebサイトへのログインアカウントとは別で管理されていると思うのですが・・・。 わかる方、よろしくお願いします。

    • ベストアンサー
    • PHP
  • Apache使ってphpでMySQLへアクセスが…

    Macを使っているものです. 最近phpでMySQLにアクセスしようということに取り組んでいます. しかし,apacheがよくないのかmysqlがよくないのか適切に動作してくれません. よくわからないので,手順を書いて問題を言及してみました... 何がいけないのでしょうか... --------- Apacheはデフォルトで入ってるはず・・・ apacheの設定ファイルhttpd.confのポートを8080に設定(これで競合はないはず・・・) ↓ [1]URLにhttp://localhost:8080/とうつと,Apacheのテストページではなく,It works!と出る ↓ とりあえず,Siteフォルダにphpファイルを置き,hello worldを表示.できた(じゃあ,動いてるのかな?) ↓ コマンドラインから「apachectl start」を実行「Already loaded」 じゃあ,動いてるっぽい ↓ じゃあ,DBアクセス用のphpを動作させよう!MySQL導入 ↓ 設定ファイルphp.iniのパスがおかしかったので,mysql.default_socket=/tmp/mysql.sockに変更 実際にcdで移動し,ファイルがmysql.sockがあることを確認 ↓ よーし,実行だ!http://localhost:8080/db_access.php→Not Found あるぇ?なんでだ? ↓ http://(ip直打ち):8080/db_access.php→表示! でも,ソースコード内に以下の記述をしている(簡略化して書きます) ********** $url="localhost" $link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。"); <html>接続ID:<?=$link ?></html> ********** なのに,結果は :::::::::: 接続ID: :::::::::: という風になにも表示されない(・ω・` 結果が「MySQLへの接続に失敗しました。」なら,そもそもMySQLに接続できてないんだろうけど,結果だけがかえってこないのはなんでだろう. ちなみに,$urlをip直打ちにしたらブラウザに怒られた.そりゃそうだよな. --------- という流れで今に至ります. おそらく[1]の時点が問題かと自分では思うのですが,原因がわかりません. ご助言おねがいいたします.

    • 締切済み
    • PHP