versusbassz / wp-batcher
此包已被弃用,不再维护。未建议替代包。
在WordPress中迭代成千上万的帖子/用户等,无需内存溢出和编写样板代码
0.1.0
2022-01-13 09:40 UTC
Requires
- php: >=5.6
Requires (Dev)
- phpunit/phpunit: ^7
- symfony/var-dumper: ^5.3
- yoast/phpunit-polyfills: ^1.0
README
如果您需要在WordPress中更改相同类型的大量项目(帖子、用户等)(可能导致内存不足),此库可以帮助您编写更少的代码并避免内存不足。
安装
composer require versusbassz/wp-batcher 0.1.*
如何使用
假设您有一个数据库中有100000篇帖子,您需要遍历它们并更改它们。
当然,您不能直接使用 get_posts( [ 'nopaging' => true ] )
,因为您将得到 致命错误:内存限制已超过 bla bla bla...
。
所以为了完成这项工作,您需要分批次连续处理您的帖子(例如,每次100篇帖子)。
不使用库的代码示例
$paged = 1; wp_suspend_cache_addition( true ); while ( true ) { $items = get_posts( [ 'posts_per_page' => 100, 'paged' => $paged, 'orderby' => 'ID', 'order' => 'ASC', ] ); if ( ! count( $items ) ) { break; } foreach ( $items as $item ) { // Payload } ++$paged; } wp_suspend_cache_addition( false );
使用库后,上述代码变为
use \Versusbassz\WpBatcher\WpBatcher; $iterator = WpBatcher::get_posts(); foreach ( $iterator as $item ) { // Payload }
并且该库在幕后不仅执行了 wp_suspend_cache_addition()
。
文档
请参阅 Wiki
兼容性
- PHP >= 5.6(目标版本是WordPress要求的版本 https://wordpresstheme.cn/about/requirements/)
- WordPress 5.7+
版本和稳定性
项目遵循 https://semver.org/
许可证
项目的许可证是GPL v2(或更高版本)