• ベストアンサー

PHP+MySQLはチャットスクリプトには不向きか?

PHPで自サイト用のチャットスクリプトを作ろうと思っています。 現在MySQLが使えるレンタルサーバーを使用中なので、せっかくなら、 ログをファイルでなくMySQLの方に保管しようかと考えています。 が、実際にMySQLを使ったチャットというのをあまり見かけたことがなくて、 「MySQLはチャットには向いてないのか?」と少々不安だったりします。 ログ保管にファイルを使った場合とデータベースを使った場合では、 負荷やレスポンスに違いが出てきたりするものでしょうか? (機能を欲張ったあまり軽くないチャットになりそうなので、 抑えられるとこで負荷を抑えたいと思います…。) 何か情報があれば、ぜひご教授を宜しくお願いします。

  • PHP
  • 回答数3
  • ありがとう数4

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

  • ベストアンサー
回答No.2

# 1さんのいう通り、自動更新等の関係上、JavaScriptが必要になります。 MySQLは軽量なのでチャットのログにも良いかもしれません。 負荷はテキストファイルに比べれば若干重いのは確かでしょうが、気になる事はないと思います。 ただ、むやみに登録しまくれば(例えば数万レコード以上)当然重くなりレスポンスは悪くなって来るでしょうから、リアルタイムのログテーブル(数百件)と、過去ログは別にしておいた方がいいと思います。 チャットプログラムにDBがあまり使われないのは、過去ログ等を検索する事にあまり意味が無い(その場のおしゃべりが基本)だからじゃ無いですかね。と言うより、ログは検索されない方が良い、、、、と言う場合もあったり(笑。 Javaやフラッシュを使った多くのチャットプログラムでは、チャットに参加した時点からのみログが見える、と言うのが多いと思います。と言うより、それがチャットじゃないかと。。。

doubleman
質問者

お礼

>過去ログ等を検索する事にあまり意味が無い(その場のおしゃべりが基本)だからじゃ無いですかね。と言うより、ログは検索されない方が良い、、、、と言う場合もあったり(笑。 なるほど、確かにそうですね(笑)見かけなかったわけです。 今回作ろうとしているものの場合は過去ログが結構重要な意味を持ってたりするので、 (チャットというより掲示板に近いのかもしれません) そういうことからも、やはりDBを使ったプログラムにするのが良いかもしれないですね。 負荷は気になるほどではないだろうということですし、MySQLでいこうと思います。 アドバイスいただいた通り、リアルタイムのログと過去ログは別テーブルに。 貴重なアドバイス有難うございました。

その他の回答 (2)

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.3

がると申します。特に問題なくPHP+MySQLのみ(JavaScriptなし)でも十分に可能ではあるのですが。 例えば、ログが少量であったり、という場合は、テキストのほうが早いです。 ただ、例えば「大量にログを残す」「各ユーザごとに"この人のログを表示しない"などの多機能性での設計を考えている」のであれば、MySQLのほうが早くなるだろうと思われます。 「機能を欲張ったあまり軽くないチャット」との事なので、だとするとMySQLのほうがよい可能性は高いのではないでしょうか?

doubleman
質問者

お礼

>特に問題なくPHP+MySQLのみ(JavaScriptなし)でも十分に可能ではあるのですが。 あ、そうなんですね。JavaScriptを使わないとするとmetaタグでリロードさせる…? (くらいしか思いつかなかったりします) ログは少量ということはないと思いますし、過去ログとして全てのログを (場合によっては小分けにして)保管するようにするつもりです。 また、仰られた『各ユーザごとに"この人のログを表示しない"』 なんていう機能もまさにつけたいと思ったりしているので、 やはりがるさんが仰られたように、MySQLの方が良い可能性高いですよね。 テキストファイルでなくMySQLを使っていこうと思います。 貴重なアドバイスありがとうございました。

  • awazak
  • ベストアンサー率36% (61/165)
回答No.1

PHPとMysqlのみでは、チャットのようなリアルタイムで変化するツールはできません。 他に、JavaScriptなどが必要になるはずです。 また、いろいろな機能を盛り込んだものであれば、textファイルより、 俄然Mysqlをオススメします。 検索機能などが充実していますし、レスポンスは早いです。 たとえば、1000行のデータが合ったとすると、そこから、該当の部分を取り出すのに textファイルを使っていると、相当重いはずです。

doubleman
質問者

お礼

あ、そうですね、必要なJavaScriptも加えつつ。 やはり多機能を重視すると検索など自由のきくMySQLの方が良いんですね。 気になっていたレスポンスもtextファイルより有利なようなので安心しましたし、 オススメされたMySQLの方で頑張っていこうと思います。 貴重なアドバイス有難うございました。

関連するQ&A

  • チャットでの自動ログアウト(PHP+MYSQL)

    今研究でPHPとMysqlを使ったチャットを作ってるんですが、どうやればチャットのブラウザーを消すと同時に退出し参加者に反映するのかわかりません。どんな小さな事でもいいので教えてください。 ちなみにMysqlのdtabase内のtableに参加者のニックネームとログイン時間のを示したものがあり、コメントをするとログの時間は更新されます。

    • ベストアンサー
    • PHP
  • PHPからMySQLの起動について

    PHPからMySQLの起動について レンタルサーバーを借りてPHP,MySQLの勉強をしています。 PHPからMySQLの起動ができなくて困っていますので、教えていただきたいのですが、 <?PHP $dbkidou = mysql_connect("どこのサーバーか","ユーザー名","パスワード"); //データベースの起動ができなかった場合 if ($dbkidou == False) { print ("error"); exit; } $db = "データベースの名前"; ?> まずレンタルサーバーのドメインを「abc.com」としています。これに対するユーザー名が「def」、パスワードが「ghi」です。 そしてMySQLデータベースは「jkl_m」,「jkl_n」の2つを設けていて(phpMyAdminで作成しました)MySQLユーザ名が「opq」、パスワードが「rst」です。今回は「jkl_m」のサーバーを起動させたいのですが、上記PHP文の、 どこのサーバーか ユーザー名 パスワード データベースの名前 の各部分にどれを書けば良いのでしょうか? 何通りか試しているのですが、うまくいかないんです…

    • ベストアンサー
    • PHP
  • MySQLの効率の良い使い方

    お世話になっております。 これまで、テキストファイルにログを保存する形で、SNSの簡易版などを作成していたのですが、 インデックス用のログが頻繁に破損してしまうため、速度向上の目的も合わせてMySQLに移行したいと考えております。 Apache2+PHP+MySQLでの構築を考えているのですが、データベースを利用するのは初めてでして、 基本的な使い方は理解したのですが、効率的なデータベースの利用法が良く分かりません。 これまでのファイルに保存していく方式では、以下のような構造でした。 user.log - 全ユーザーのIDやパスワード、名前などの簡単な情報をまとめて記録した検索用インデックスログファイル user/[ID].log - ユーザーの性別や自己紹介などの登録情報をID別に保管 item/[ID].log - SNS内で利用できるミニゲームの所持アイテムをID別に保管 mail/[ID].log - SNS内でのメールのようなものをID別に保管 ... これらをMySQLで実装する場合には、どのようにテーブルを作成すれば良いのでしょうか? ユーザー1人ひとりに対し、1つずつ所持アイテム用のテーブルであるとか、 メール用のテーブルを作成していけば良いのでしょうか? 例)「item_[ID]」という名前のテーブルをユーザーごとに作成。 そうすると、ユーザーは数千人を想定しているので、 テーブルを数万個作ることになりますが、高負荷などの問題はないでしょうか? それと、これまで同時アクセスによるファイルの破損のトラブルが多かったのですが、 MySQLを用いれば改善されるでしょうか?(これまでも排他処理は色々講じていました) カウンタなど頻繁に更新され、かつデータが非常に軽いものについては、 ファイルにログを保存した方が良いのでしょうか? ご教授頂ければ幸いです。 ローカル:WinXP、Apache2.2.3、PHP5.2.0、MySQLServer5.0 実装サーバー:Linux、Apache1.3.37、PHP4.4.4、MySQL3.23.58

    • ベストアンサー
    • MySQL
  • VB2008のDataGridViewにあるデータをPHP5を使ってMySQLに

    VB2008で大量のデータをサーバーにあるPHP5スクリプトにデータを送ろうと思いますが、VBとPHPで通信する何か良い方法はありますか? データベースはMySQL5です。 DataGridViewからXMLファイルにして、それをPHPに吸わせてMySQLにセットする方法を考えていますが、簡単な方法があれば知りたいです。 直接VBからMySQLへ書き込み?は可能でしょうか。

  • PHPでMySQLのDBに接続

    PHP,MySQLが使えるレンタルサーバーを借りているのですが, PHPでMySQLに接続し、php_dbを選択をするようにしたいのですが、 この時DBファイルはどこに置けばいいのでしょうか? 現在はMySQLの管理コマンド(?)とは別にpublic_htmlの中に PHPフォルダを作り、そこにDBファイルを入れています。 PHPのスクリプトは <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><title>練習</title> <meta http-equiv="content-language" content="ja"> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> </head><body> <?php $con = mysql_connect(); if (!$con) { echo ("Error:MySQLに接続できませんでした。<br />"); } else { echo ("接続ID=$con<br>\n"); } $selectdb = mysql_select_db("php_db" ,$con); if (!$selectdb) { echo ("Error:データベースを選択できませんでした"); } else { echo ("データベースphp_dbを選択しました。"); } ?> </body></html> としています。 MySQLには接続ができるのですが、php_dbには接続ができません。 php_dbのおき場所を変えるのか、ファイルの指定が間違っているのか その他、どの要に変更をしたらよいのでしょうか? お願いします。 環境はレンタルサーバーがLINUXでPHPのバージョンなどはわからないんです・・・!! 開発がOSがW2kでFTPで転送してます。

    • ベストアンサー
    • PHP
  • PHPコードにMySQLが反応しない

    環境 OS:winXP SP2 HE(localhost) Apache 2.0.52 MySQL 5.0.2 PHP 5.0.3 Apache,MySQL起動しています。 自動起動なのでMySQLのタスクトレイの表示はありませんがMySQLCommandLineClientでログインできますし、SQL文も通ります。 データベースは用意してあります。 必要な設定は済んでいると考えています。 [httpd.conf,my.ini] PHPコードだけのスクリプトは動きます。 ファイルはApache2\htdocs\に入れて、ブラウザで呼び出しています。 問題ではないのかと思っているところはデフォルトフォルダの位置です。 MySQLは"C:\Program Files\MySQL\MySQL Server 5.0" Apacheは"C:\Program Files\Apache Group\Apache2" PHPは"C:\PHP" になっています。 要点 PHPにてデータベースを参照するためのクエリが通らないようです。 参考書などのサンプルスクリプトとデータベースを利用してもクエリは通りません。 何が悪いのかご意見ご教授頂ければ幸いです。

    • ベストアンサー
    • MySQL
  • PHP、MySQLをリモート上で作動させたいと思う初心者です。

    レンタルサーバ上で、PHP+MySQLを使おうと考えている初心者です。 Localhostでの試運転も成功しており、そしていよいよレンタルサーバの上で稼動させようという時点まで来ています。 Accessの使い方もほとんど理解しています。 レンタルサーバの仕様は以下のとおりとなっています。 http://land.to/shiyou.php そこで、質問なのですが、 (1)新たにデータベースを作るにはどうしたらいいのだろう (2)そのデータベースに接続するには、PHP内で、 mysql_connect("●●","","") と言うメソッドを使うらしいですが、●●にはどんな値を入れたらいいんでしょうか? 右のほうには、IDとパスワードを入れることは理解していますが… (3)そもそも、サーバ上ではデータベースはどんな形で存在するのでしょうか? Accessと言う形でもいいのでしょうか?それとも特別な拡張子のファイル?? どなたか教えてください。

  • PHP+MySQLでつくったアプリケーション

    自分のPCに勉強用としてApacheなどをインストールして いまでPHPとMySQLを使ったアプリケーションを作成していました。 PHPとMySQLがつかえるフリーのWEBサーバを借りて 今度は実際にWEB上で公開して見ようと思っています。 実際にアップロードしているときに気がついたのですが 将来的にMySQL以外のデータベースを使うことになっても 簡単に移行できるようにデータベースの操作に関する処理を別のファイルに書いて それをincludeしてつかっています。 php.iniのinclude_patch=のところを編集して別のところからincludeできるように設定してあったのですが、 レンタルサーバーのような自由が利かないサーバーではどのようにして対処したらいいでしょうか? 対処方法、代わりの方法などアドバイスいただけたらと思います。 よろしくおねがいします。

    • 締切済み
    • PHP
  • PHPでMySQLのデーターベースが書込み出来ない

    PHPとMySQLとJAVAスクリプトで作成しましたデーターベースについてお尋ねします。 PHPとMySQLで作成したデータベースの検索したり、読み込みを普通に可能ですが、書き込み及び、削除が出来ません。 PhpMyAdminでは書けます(データー入力出来ます)が、PHPプログラムからはデーターを入力したり、削除を行うことが出来ません。 そして、全くエラーも出ません。 PHP上では「書き込みました」と、いかにも正常なようなメッセージが返ってきます。 が、中身は空です。 システムが出来上がって問題なく3年以上使用していたのですが、自宅のLINUXサーバーのHDDが壊れましたので、再度システム構築をやり直しました。 MySQLとPHPも再インストールを行い再構築を行いました。 その後上記症状が出て書き込み、削除が出来なくなりました。 PHPのプログラムは全く触っておらず、変更も更新もしておりません。 念のためプログラムのチェックも何度もしておりますが、勿論これといって問題は見あたりません。 PHP.INI等の設定ファイルに問題があるのでしょうか。 それとも、MySQLに問題が有るのでしょうか。 宜しくご教授の程お願い致します。

  • PHPとACTION SCRIPTの連携

    PHPとACTION SCRIPTの連携 サーバー(レンタルサーバ)側でMYSQLのデータをからPHPで取り出すことができるようになりましたが、 そのデータを、どうやってaction script(クライアント側)に連携させるかで悩んでます。 phpとmysqlの連携の本は何冊かそろったのですが、 ACTION SCRIPTとphpの連携について書いてある本が見つからなくて、 詳しい人がいたら教えてください。 PHPからmysqlに接続して、テーブルを選んで、 echo $row["●●"]; という形で、インターネットエクスプローラーに、必要なデータを表示させるところまではできたのですが、 このデータをaction scriptに連携させるには、どうしたらいいでしょうか?

    • ベストアンサー
    • PHP