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 中包括很多适合于软件开发人员的有趣的访谈和讨论。







