整體環(huán)境:Apache2.4.25+PHP5.6+MySQL5.5.57需求:比如用戶表中有2萬(wàn)條數(shù)據(jù),需要將這些數(shù)據(jù)先查出,然后根據(jù)用戶組表中對(duì)應(yīng)設(shè)置的比例,計(jì)算用戶應(yīng)該升級(jí)還是降級(jí),再進(jìn)行更新操作。問(wèn)題:當(dāng)用戶量小的時(shí)候,沒(méi)有任何問(wèn)題,直接瀏覽器執(zhí)行,運(yùn)行結(jié)束,所有任務(wù)完成。但是當(dāng)用戶量超過(guò)6000后,發(fā)現(xiàn)瀏覽器中會(huì)報(bào)ApacheServer錯(cuò)誤我的PHP代碼中也增加了ignore_user_abort(true);和set_time_limit(0);做法:我目前的解決方案是,將這條任務(wù)拆分成若干個(gè)小任務(wù),單個(gè)執(zhí)行,這樣雖然能解決了,但是不是長(zhǎng)久之計(jì)啊。因?yàn)橛脩袅窟€是會(huì)增加的。疑問(wèn):想問(wèn)下,大神們,你們是如何處理這種情況的?因?yàn)榇a原先不是我寫(xiě)的,只是接手后,用戶增長(zhǎng)到6000以上了,才發(fā)現(xiàn)這個(gè)問(wèn)題的。中間我想調(diào)試下,用ob_flush()flush()看看過(guò)程的,結(jié)果完全失效,怎么弄都沒(méi)反應(yīng),后來(lái)改用日志記錄查看,才發(fā)現(xiàn),每次每條任務(wù),只能執(zhí)行到大概2500左右的位置,就會(huì)自己掛掉。查看服務(wù)器資源,cpu和內(nèi)存也沒(méi)有滿,數(shù)據(jù)庫(kù)連接數(shù)也沒(méi)有滿,而且因?yàn)橹暗念l繁請(qǐng)求出錯(cuò),我現(xiàn)在數(shù)據(jù)庫(kù)已經(jīng)改成長(zhǎng)連接了。所以,嘮叨了這么多,還是想問(wèn),大神們,你們?cè)谟龅竭@種任務(wù)的時(shí)候,是如何執(zhí)行的?也是和我這邊一樣,同一個(gè)請(qǐng)求,一直等響應(yīng)嗎?還是有其他方法??
PHP查詢大批量MySQL疑問(wèn)?
30秒到達(dá)戰(zhàn)場(chǎng)
2019-05-09 09:51:03