国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

香港云服务器
服務(wù)器之家 - 編程語(yǔ)言 - PHP教程 - Laravel中的chunk組塊結(jié)果集處理與注意問(wèn)題

Laravel中的chunk組塊結(jié)果集處理與注意問(wèn)題

2019-09-12 11:53佚小名 PHP教程

這篇文章主要給大家介紹了關(guān)于Laravel中chunk組塊結(jié)果集處理與使用中要注意問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

如果你需要處理成千上萬(wàn)個(gè) Eloquent 結(jié)果,可以使用 chunk 命令。chunk 方法會(huì)獲取一個(gè)“組塊”的 Eloquent 模型,并將其填充到給定閉包進(jìn)行處理。使用 chunk 方法能夠在處理大量數(shù)據(jù)集合時(shí)能夠有效減少內(nèi)存消耗:

01Flight::chunk(200, function ($flights) {
02 foreach ($flights as $flight) {
03  //
04 }
05});
06 
07$all_ark=Arkvolume::chunk(50000, function ($flights) {
08 foreach ($flights as $flight) {
09  $GLOBALS['something'][] = $flight['id'];
10 }
11});
12  
13var_dump($GLOBALS['something'] );exit;

這段代碼是執(zhí)行一個(gè)100條的數(shù)據(jù)進(jìn)行更新,當(dāng)執(zhí)行完成后繼續(xù)后面的另一百條數(shù)據(jù)……

也就是說(shuō)他每次操作的是一個(gè)數(shù)據(jù)塊而不是整個(gè)數(shù)據(jù)庫(kù)。

需要注意的是:當(dāng)使用帶篩選的條件的chunk時(shí),如果是自更新,那么你會(huì)漏掉一些數(shù)據(jù),接著看代碼:

1User::where('approved', 0)->chunk(100, function ($users) {
2 foreach ($users as $user) {
3 $user->update(['approved' => 1]);
4 }
5});

如果要運(yùn)行上面的代碼,并不會(huì)有報(bào)錯(cuò),但是where條件是篩選approved為0的user然后將approved的值跟新為1。
在這個(gè)過(guò)程中,檔第一數(shù)據(jù)庫(kù)的數(shù)據(jù)被修改后,下一個(gè)數(shù)據(jù)塊的數(shù)據(jù)將是在被修改后的數(shù)據(jù)中選出來(lái)的,這個(gè)時(shí)候數(shù)據(jù)變了,而page也加了1。所以執(zhí)行結(jié)束后,只對(duì)數(shù)據(jù)中一半的數(shù)據(jù)進(jìn)行了更新操作。

如果沒(méi)有明白的話,我們來(lái)看一下chunk的底層實(shí)現(xiàn)。還以上面的代碼為例,假如一共有400條數(shù)據(jù),數(shù)據(jù)被按照100條進(jìn)行分塊處理。

page = 1: 最開始的時(shí)候page為1,選取1-100條數(shù)據(jù)進(jìn)行處理;

page = 2: 這時(shí)候前一百數(shù)據(jù)的approved值全部為1,那么在次篩選的時(shí)候數(shù)據(jù)將從第101條開始,而這個(gè)時(shí)候的page=2,那么處理的數(shù)據(jù)將是第200-300之前的數(shù)據(jù)

之后依舊。

01public function chunk($count, callable $callback)
02{
03 $results = $this->forPage($page = 1, $count)->get();
04  
05 while (count($results) > 0) {
06  // On each chunk result set, we will pass them to the callback and then let the
07  // developer take care of everything within the callback, which allows us to
08  // keep the memory low for spinning through large result sets for working.
09  if (call_user_func($callback, $results) === false) {
10   return false;
11  }
12  
13  $page++;
14  
15  $results = $this->forPage($page, $count)->get();
16 }
17  
18 return true;
19}

Laravel chunk 使用注意的問(wèn)題

使用 Laravel 的 chunk 可以用來(lái)優(yōu)化大結(jié)果集的查詢,提供分塊處理數(shù)據(jù)的方法,但是如下的例子就會(huì)有問(wèn)題:

1User::where('approved', 0)->chunk(100, function ($users) {
2 foreach ($users as $user) {
3 $user->update(['approved' => 1]);
4 }
5});

原因在于第一次查詢:

1select * from users where approved = 0 limit 100 offset 0;

update 這一批數(shù)據(jù)的 approved 為 1 之后,

再看第二次查詢:

1select * from users where approved = 0 limit 100 offset 100;

這個(gè)時(shí)候因?yàn)橛?where approved = 0 條件并且偏移量從 100 開始,這樣其實(shí)就漏掉了 100 條 approved 為 0 的數(shù)據(jù)。

所以,我們要避免使用 chunk 的時(shí)候,更改和過(guò)濾條件的字段的值。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)服務(wù)器之家的支持。

延伸 · 閱讀

精彩推薦
838
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 日韩成人av电影 | 国产精品久久久久久亚洲调教 | 99国产精品久久久久久久成人热 | 日韩看片| 欧美视频精品在线 | 亚洲一区二区免费视频 | 国产毛片毛片毛片 | 在线播放高清视频www | 国产一区二区三区四区在线观看 | 欧美精品一区在线 | 免费三级黄色 | 91精品视频在线播放 | 极品一区 | 中文字幕精品视频 | 久久亚洲美女 | 毛片在线视频 | 爱干视频 | 欧美日韩亚洲一区二区三区 | 国产精品久久久久久久久久久久久久 | 国产欧美成人 | 日韩福利电影 | 成人午夜视频在线播放 | 91尤物网站网红尤物福利 | 午夜视频在线观看网站 | 一区二区中文字幕 | 午夜精品福利在线观看 | 操久久 | 日韩精品日韩激情日韩综合 | 超碰一区二区三区 | 精品一二区 | 午夜爽爽 | 久久精品日韩 | 日韩在线短视频 | 久久久国际精品 | 韩日一区 | 91精品一久久香蕉国产线看观看新通道出现 | 亚洲精品视频免费观看 | 91亚洲国产成人久久精品网站 | 国产午夜精品一区二区三区 | 欧美日韩专区 | 操操操操操操操 |