快速业务通道

PHP 中的批处理

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-25
sp;   $db->execute( $sth, $id );    return true;  }  public static function add( $function, $args )  {    $db = ProcessingItems::get_db();    $sth = $db->prepare( ''INSERT INTO processing_items VALUES (null,?)'' );    $db->execute( $sth, array( $function ) );    $res = $db->query( "SELECT last_insert_id()" );    $id = null;    while( $res->fetchInto( $row ) ) { $id = $row[0]; }    foreach( $args as $key => $value )    {        $sth = $db->prepare( ''INSERT INTO processing_args  VALUES (null,?,?,?)'' );        $db->execute( $sth, array( $id, $key, $value ) );    }    return true;  }  public static function get_all()  {    $db = ProcessingItems::get_db();    $res = $db->query( "SELECT * FROM processing_items" );    $rows = array();    while( $res->fetchInto( $row ) )    {        $item = array();        $item[''id''] = $row[0];        $item[''function''] = $row[1];        $item[''args''] = array();        $ares = $db->query( "SELECT key_name, value FROM   processing_args WHERE item_id=?", $item[''id''] );        while( $ares->fetchInto( $arow ) )            $item[''args''][ $arow[0] ] = $arow[1];        $rows []= $item;    }    return $rows;  }}?>
 


这个类包含三个重要的方法:add()、get_all() 和 delete()。与 mailouts 系统一样,前端使用 add(),处理引擎使用 get_all() 和 delete()。

清单 7 所示的测试脚本将一个条目添加到处理队列中。


清单 7. generic_test_add.php
    <?phprequire_once ''generic.php'';ProcessingItems::add( ''printvalue'', array( ''value'' => ''foo'' ) );?>
 


在这个示例中,添加了一个对 printvalue 函数的调用,并将 value 参数设置为 foo。我使用 PHP 命令行解释器运行这个脚本,并将这个方法调用放进队列中。然后使用以下处理脚本运行这个方法。


清单 8. generic_process.php
    <?phprequire_once ''generic.php'';function printvalue( $args ) {  echo ''Printing: ''.$args[''value'']."\n";}foreach( ProcessingItems::get_all() as $item ) {  call_user_func_array( $item[''function''],    array( $item[''args''] ) );  ProcessingItems::delete( $item[''id''] );}?>
 


这个脚本非常简单。它获得 get_all() 返回的处理条目,然后使用 call_user_func_array(一个 PHP 内部函数)用给定的参数动态地调用这个方法。在这个示例中,调用本地的 printvalue 函数。

为了演示这种

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号