【问题标题】:Chat support in PHP 5PHP 5 中的聊天支持
【发布时间】:2014-03-24 03:02:40
【问题描述】:

您好,我目前正在 PHP 中开发一个聊天支持,其中涉及 2 个数据库,一个用于编译所有已添加的对话,现在每个表都以 2 个用户命名,另一个用户用于存储聊天它里面两者之间的日志是msgid和发送者和接收者的时间戳

另一个数据库用于存储第二个数据库的详细信息,现在我有点纠结于如何在创建表后插入消息,这是我目前的脚本

    //inserting chat conv good for 1 week 
      $sql4="INSERT INTO thread(msgid, startedby, participant, creation_date) VALUES (  :msgid ,:startedby,:participant,NOW())";
      $prep=$con->prepare($sql4);
      $prep->bindParam(':msgid',$msguser,PDO::PARAM_STR);
      $prep->bindParam(':startedby',$us1_o,PDO::PARAM_STR);
      $prep->bindParam(':participant',$us2_o,PDO::PARAM_STR);
      $prep->execute();


//creation of table based on both involve parties
      $con2 = new PDO("mysql:host=". DB_host .";dbname=db", DB_username , DB_password);
      $con2->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      $con2->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);


      $q="CREATE TABLE ". $user1 . $user2 ."chat_log (
  modurator varchar(100) NOT NULL,
  client varchar(100) NOT NULL,
  tstamp int(10) NOT NULL,
  msgid varchar(250) NOT NULL,  
  PRIMARY KEY (msgid)
  ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

  CREATE TABLE ". $user1 . $user2 ."chat_conversation (
  msgid varchar(250) NOT NULL,
  username varchar(250) NOT NULL,
  conversation varchar(250) NOT NULL,
  tstamp int(10) NOT NULL,
  PRIMARY KEY (msgid)
  ) ENGINE=MyISAM DEFAULT CHARSET=latin1";

      try {
      $con2->exec($q) or die($con2->errorInfo());
      echo "Success";
      //insert of chat conv


  } catch (PDOException $e) {
 $e->getMessage();
}

  $sql5="INSERT INTO ". $user1 . $user2 ."chat_conversation(msgid, username,conversation,tstamp) VALUES (  :msgid ,:username,:msg,NOW())";
      $prep2= $con2->prepare($sql5);
      $prep2->bindParam(':msgid',$msguser,PDO::PARAM_STR);
      $prep2->bindParam(':username',$usern,PDO::PARAM_STR);
      $prep2->bindParam(':msg',$txt,PDO::PARAM_STR);
$prep2->execute();

   }

我想在新创建数据后立即插入数据的原因是因为我的老板希望它是实时的,这就是为什么使用 ajax 调用某些变量的原因

这是使用类 btw 调用的

【问题讨论】:

    标签: php ajax database


    【解决方案1】:

    你需要一些推送功能来处理这样的事情。 PHP 不支持 web sockets 或类似的东西,但你可以使用为你做的服务。 http://pusher.comhttp://pubnub.com 是两个服务示例。

    【讨论】:

    • “PHP 不支持 Web 套接字或类似的东西”why not?
    • 也许我只是希望它不会。但你是对的,也许确实如此。但它不应该。
    • 在我看来,这只是在滥用 PHP。 PHP 不适用于长时间运行的进程(start.php 第 19 行:set_time_limit(0);)。出于演示目的,这很有趣,但在生产环境中会很混乱。
    • 除了推送功能,我们还有其他选择吗??
    • 没有人回答我,所以我想我必须去@Bram的回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 2012-03-13
    • 2012-12-26
    • 1970-01-01
    相关资源
    最近更新 更多