php使用yield进行大数据量处理
当我们需要使用php来处理大数据量时,例如循环数据库的所有记录,这个记录可能会很大,例如100万行,那么通过传统的办法就行不通了。首先通过web访问,php有超时时间,默认是30秒。那么就只能通过php cli的方式来执行,这样就没有超时时间了,但由于数据量太大,php循环时需要将数据全部载入内存中执行,由于数据量太大,php会报Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 4096 bytes)的错误。php默认的内存限制为128M,虽然可以通过修改php.ini中memory_limit的选项的值来提高内存限制,但始终不是最优的解决办法。PHP通过生成器函数可以极大节省内存开销。生成器函数
生成器函数看起来像普通函数——不同的是普通函数返回一个值,而生成器可以 yield 生成多个想要的值。 任何包含 yield 的函数都是一个生成器函数。yield...
点击查看剩余70%
网友评论