PHP 中的批处理的实现

2019-04-11 01:14:56刘景俊



BatchFiles 类有三个主要方法:add()、get_all() 和 delete()。这个类不访问数据库,而是读写 batch_items 目录中的文件。

使用以下测试代码添加新的批处理条目。

清单 10. batch_by_file_test_add.php
    <?phprequire_once 'batch_by_file.php';BatchFiles::add( "printvalue", array( 'value' => 'foo' ) );?>


有一点需要注意:除了类名(BatchFiles)之外,实际上没有任何迹象能够说明作业是如何存储的。所以,以后很容易将它改为数据库风格的存储方式,而不需要修改接口。

最后是处理程序的代码。

清单 11. batch_by_file_processor.php
    <?phprequire_once 'batch_by_file.php';function printvalue( $args ) {  echo 'Printing: '.$args['value']."n";}foreach( BatchFiles::get_all() as $item ) {  call_user_func_array( $item['function'], array( $item['args'] ) );  BatchFiles::delete( $item['id'] );}?>


这段代码几乎与数据库版本完全相同,只是修改了文件名和类名。

 回页首 


结束语

正如前面提到的,服务器对线程提供了许多支持,可以进行后台批处理。在某些情况下,使用辅助线程处理小作业肯定比较容易。但是,也可以使用传统工具(cron、MySQL、标准的面向对象的 PHP 和 Pear::DB)在 PHP 应用程序中创建批作业,这很容易实现、部署和维护。

参考资料 

学习

您可以参阅本文在 developerWorks 全球站点上的 英文原文 。

阅读 IBM developerWorks 的 PHP 项目资源中心,进一步了解 PHP。

PHP.net 是面向 PHP 开发人员的优秀资源。

PEAR Mail_Queue 包 是一个健壮的邮件队列实现,其中包括数据库后端。

crontab 手册 提供了 cron 配置的细节,但是不容易理解。

PHP 手册中关于 Using PHP from the command line 的一节可以帮助您了解如何从 cron 运行脚本。

随时关注 developerWorks 技术事件和 webcast。

了解世界各地即将进行的会议、展览、网络广播和其他 活动,IBM 开放源码开发人员可以通过这些活动了解最新的技术发展。

访问 developerWorks 开源技术专区,获得广泛的 how-to 信息、工具和项目更新,可以帮助您利用开放源码技术进行开发并将其与 IBM 产品结合使用。

developerWorks podcasts 中包括很多适合于软件开发人员的有趣的访谈和讨论。
相关文章 大家在看