客户端调用server端的某些比较耗时的方法,要用异步机制来处理, 也就是说, 客户端只提供参数并触发一下,具体运行,完全交给server端,而且当有多个这样的调用的时候,还要采用排队的方法(就是一个运行完接着运行下一个)来运行。
    请问大家这样的server端功能应该如何来实现呢? 谢谢啦~ 
    PS:server端是运行在linux下的 用php来编写的。

解决方案 »

  1.   

    这个需要浏览器端实时等待服务器端的数据吗,楼主可以考虑用ajax定时轮询。不过比较耗资源,如果用户量大的话,一个比较好的方案可以在server端轮询,采用comet技术。
      

  2.   

    客户端只需要触发一下, 完全不需要等待server端得响应的, 哪怕是客户端关闭了浏览器,server端也要把客户端所触发的方法都运行一遍~
      

  3.   

    那可以把用户的请求先存到数据库中,然后用crontab定时从数据库提取任务来执行,可以每分钟提取一次,楼主可以根据服务器负载来决定提取的任务数和并发数
      

  4.   

    那除了crontab的方法外,有没有这样一种事件处理机制:  就是说把所触发的事件排成队列,然后一个一个的执行呢?就类似回调一样,当一个事件处理完了 ,转入下一个事件开始处理呢?
      

  5.   

    这个如果让php这么不间断的执行,会使内存不断增加的,php的内存回收机制不适合做这种常驻程序。所以如果要用php做处理的话,还是用触发机制比较好。如果楼主要让事件排成队列的话,就只有写一个事件监听程序了,然后单启动一个进程,阻塞,完成后在接收。这个用php实现就不太合适了。不过感觉这个用crontab也可以达到同样的效果。
      

  6.   

    客户端与server端是异步的吧,然后所触发的事件在server端需要排队执行,这是同步吧?请问除了crontab外有没有其他什么方法呢?
      

  7.   

    客户端与server端是异步的吧,
    错!客户端向服务器发出请求,然后等待服务器返回信息。这是同步然后所触发的事件在server端需要排队执行,这是同步吧?
    错!服务器是并发的,所有接收到的请求都是并行执行的。只在服务器繁忙时,才会出现排队请问除了crontab外有没有其他什么方法呢?
    这与 crontab 没有什么关系。crontab 只是一个定时任务管理器
      

  8.   

    你的意思说:一个用户通过异步机制(比如ajax)向服务端程序发送多个请求(无序的)。而这些请求在服务端是需要以一定的次序顺序执行的?如果是,你需要缓存这些请求(用数据库),然后依次进行处理(次序是你定的)