我想做个财经股票的网站,现要求采集股票的价格并入库,方便以后查询、使用。由于股票价格的即时性,必须要求时时刻刻(24小时)对目标网站采集新数据入库更新。很显然不是单纯的"小偷"程序就能解决。现在网上有不少基于PHP采集的程序,但都是须靠手工触发运行程序才可以采集,一旦浏览器离开程序就停止了。实际上我的需求就是这样:采集器在服务端上,无须人工干预,按照设定的采集流程和规则对目标网站 不间断(24小时)采集入库更新。至于前台则读取数据库显示即可。所以我想知道Linux/UNIX+Apache+PHP能满足我这样的需求吗?(Linux/UNIX下的java、C++我不懂)
如果可以,应该怎么样做?具体说采集器PHP代码的实现就行了。像这样的需求,应该怎样设计才合理?//------------------------------------我知道.net 可以,用c#写个多线程采集器在服务器上运行,前台用aspx表现就行了。

解决方案 »

  1.   

    PHP好像不支持多线程的是吧。
      

  2.   

    php的CLI模式可以实现,结合linux crond
      

  3.   


    你的意思是命令行模式的PHP写采集器,然后用LINUX计划任务crond命令执行PHP程序?有这方面的资料吗?又或者能进一步说说吗?
      

  4.   

    觉得意义不大定时执行程序用crond命
    然后相关程序内响应时间设为较大或无穷试试
      

  5.   

    像股票这种东西,一般采集是用户请求时再去采集,比较方便,可以达到一般性的应用你想采集并保存数据,这相法是好的,但需要你有准确的数据源和完整性股票系统,数据准确性至关重要,如果你无法保证数据准确性,意义不大可以想想办法能否有数据源,有可能是socket的(即持续向客户端发送信息)你收到后根据数据生成相关数据
    一般最小单位即分时图
      

  6.   

    实时去取性能太恶劣,无法承受稍高的访问压力。定时获取则是时间区段需要尽可能短,否则数据不够实时。
    php自身并不支持线程,对于多进程倒是有支持,但不是默认包含且不支持windows系统。建议还是通过启动一个php,这个php另行通过proc_open来启动并管理几个进程(如果是4 cpu,建议另行启动2个进程;8cpu的话可以放到4-6个;双cpu的话你就别考虑这个方案了)。 然后每个进程分别去更新一个分类的信息,主流程php则通过这些进程的启动参数控制其更新哪部分内容。
    这个php可以用一直在内存运行的方式,也可以用crontab的方式来运行。前者可以保证持续进行,但需要有定时运行的脚本来保证其正在运行,如不再运行需重新启动以免程序因未知原因出错而停止对数据的更新。
    后者可以保证定时运行,但crontab的定时单位最小为1分钟,如果更新周期要求比较高的话,这个时间是较长了。 而且很可能存在前一次还没有处理完,后一次又开始了。然后由于资源竞争的关系,导致等待时间逐渐延长,最后拖垮系统。
      

  7.   

    这个数据是从哪里取。
    一般如果从交易所发的行情库才需要不停的去扫描。如果从其它的行情软件里面取,完全可以在请求的时候,再取数据看一下http://www.10jqka.com.cn/cgihq/mainframe.php