昨天经理突然问我,如果一条数据在插入数据的时候,还没插进去,第二条数据就过来了,我一下子蒙了!好像php不支持多线程吧。。除了存储到内存中,等待第一条数据插入完成后再进行第二条数据,貌似没有其他办法了,当然如果用中间件就另算了

解决方案 »

  1.   

    这与 php 没什么关系,维持数据的完整性是数据库的任务
    http 通话的调度是 web 服务器的任务
    php 只是去实现业务逻辑
      

  2.   

    我想说得是,php没办法用多线程同时执行2条sql
      

  3.   

    工作的web方式下的php,本身就在以多进程(cgi方式)或多线程(模块方式)同时执行着多条sql
    并且工作在linux环境中的php也可以支持多线程编程
      

  4.   

    跟本不用考虑这种情况,不管多少个数据过来,如果是http方式,那每一个数据都是一个请求,http服务器会给你排队的。
      

  5.   

    谢谢各位,我查了一下,php是不支持多线程的,但是可以模拟多线程,其实就是多进程,需要靠linux或者apache来实现,5楼的朋友说得是没错,但是如果想同时进行处理,还是得依靠多线程来实现,这样会提高效率,让数据更加实时,比如php插入数据的时间是0.1秒,而其他程序给php传递数据的速度是0.001秒,那php只能把后面的数据放在队列中,进行排队处理,这样会导致队列越来越大,一旦达到了上限,程序就会崩掉,这种可能是存在的,比如火车售票,我猜测他们是用c或其他程序写了一个中间件,php拿到数据后就把数据传给中间件,中间件可以开多线程进行处理数据,一条数据在处理中的时候,第二条数据过来了,就开一个线程进行处理第二条数据,继而第三,第四。。
      

  6.   

    http://rainbird.blog.51cto.com/211214/277861/
      

  7.   

    这似乎只能用中间件了,或者拓展服务器架构,php不直接和数据库server交互,而是和中件的数据库缓冲服务器交互,而数据仅仅是存在这台机器内存里,周期性回写数据库,这样延迟就很小了
      

  8.   

    php 是不支持多线程,,我们用fsockopen做过一个模仿多线程的的例子,只管访问,不管理结果,,哈哈,,其实也是同时执行几个文件
      

  9.   

    既然php都支持面向对象了,那多线程是迟早的事。
      

  10.   

    php要支持多线程,难……
    原有框架很难再进一步突破。
      

  11.   


    貌似是有点危险啊,,我操作xml的时候,试过十几个人同时操作,结果数据乱得不得了,无规则。。
      

  12.   

    csdn论坛,discuz是怎么处理的???这问题感兴趣,,关注