1、建議你讀寫數(shù)據(jù)和下載圖片分開,各用不同的進(jìn)程完成。
創(chuàng)新互聯(lián)專業(yè)IDC數(shù)據(jù)服務(wù)器托管提供商,專業(yè)提供成都服務(wù)器托管,服務(wù)器租用,遂寧服務(wù)器托管,遂寧服務(wù)器托管,成都多線服務(wù)器托管等服務(wù)器托管服務(wù)。
比如說,取數(shù)據(jù)用get-data.php,下載圖片用get-image.php。
2、多進(jìn)程的話,php可以簡單的用pcntl_fork()。這樣可以并發(fā)多個子進(jìn)程。
但是我不建議你用fork,我建議你安裝一個gearman worker。這樣你要并發(fā)幾個,就啟幾個worker,寫代碼簡單,根本不用在代碼里考慮thread啊,process等等。
3、綜上,解決方案這樣:
(1)安裝gearman worker。
(2)寫一個get-data.php,在crontab里設(shè)置它每5分鐘執(zhí)行一次,只負(fù)責(zé)讀數(shù)據(jù),然后把讀回來的數(shù)據(jù)一條一條的扔到 gearman worker的隊(duì)列里;
然后再寫一個處理數(shù)據(jù)的腳本作為worker,例如叫process-data.php,這個腳本常駐內(nèi)存。它作為worker從geraman 隊(duì)列里讀出一條一條的數(shù)據(jù),然后跟你的數(shù)據(jù)庫老數(shù)據(jù)比較,進(jìn)行你的業(yè)務(wù)邏輯。如果你要10個并發(fā),那就啟動10個process-data.php好了。處理完后,如果圖片地址有變動需要下載圖片,就把圖片地址扔到 gearman worker的另一個隊(duì)列里。
(3)再寫一個download-data.php,作為下載圖片的worker,同樣,你啟動10個20個并發(fā)隨便你。這個進(jìn)程也常駐內(nèi)存運(yùn)行,從gearman worker的圖片數(shù)據(jù)隊(duì)列里取數(shù)據(jù)出來,下載圖片
4、常駐進(jìn)程的話,就是在代碼里寫個while(true)死循環(huán),讓它一直運(yùn)行好了。如果怕內(nèi)存泄露啥的,你可以每循環(huán)10萬次退出一下。然后在crontab里設(shè)置,每分鐘檢查一下進(jìn)程有沒有啟動,比如說這樣啟動3個process-data worker進(jìn)程:
* * * * * flock -xn /tmp/process-data.1.lock -c '/usr/bin/php /process-data.php /dev/null 21'
* * * * * flock -xn /tmp/process-data.2.lock -c '/usr/bin/php /process-data.php /dev/null 21'
* * * * * flock -xn /tmp/process-data.3.lock -c '/usr/bin/php /process-data.php /dev/null 21'
不知道你明白了沒有
php導(dǎo)出大量數(shù)據(jù)Excel的具體操作步驟如下:
1、使用phpstudy搭建一個測試平臺,直接訪問數(shù)據(jù)庫。
2、下載的phpcms安裝包拷貝到IIS目錄,開通訪問,即可搭建成功。
3、登錄網(wǎng)站后臺,系統(tǒng)權(quán)限,文件目錄以及數(shù)據(jù)庫等功能,進(jìn)行管理。
4、在phpcms后臺,擴(kuò)展,數(shù)據(jù)庫工具,數(shù)據(jù)庫導(dǎo)出,程序池選擇phpcmsv9,開始備份數(shù)據(jù)。
5、打開IIS網(wǎng)站目錄,在D:\wwwroot\kmxy\wwwroot\caches\bakup\default文件夾,查看導(dǎo)出的數(shù)據(jù)庫文件。
6、登錄phpmyadmin,選擇數(shù)據(jù)庫導(dǎo)出,選擇Excel格式,即可導(dǎo)出。
大數(shù)據(jù)對于我們這些從業(yè)者來說,是不太喜歡說的一個詞。所謂內(nèi)行看門道,外行看熱鬧,大數(shù)據(jù)這兩年風(fēng)風(fēng)火火,大家都爭先恐后的討論著,但說到如何掌握或者運(yùn)用,很多人是不知所措的。
私以為,大數(shù)據(jù)的核心在三個地方:數(shù)學(xué)+計(jì)算機(jī)知識+業(yè)務(wù)
先說說題主說到的編程,我在這里將它納入計(jì)算機(jī)知識這一部分,因?yàn)榫幊虒τ谖覀儊碚f只是大數(shù)據(jù)的冰山一角。這兩年大數(shù)據(jù)的發(fā)展,絕對不是因?yàn)榫幊陶Z言的進(jìn)步,很大一部分是由于計(jì)算機(jī)工具的進(jìn)步或者硬件的提升。 尤其是現(xiàn)在計(jì)算機(jī)硬件價(jià)格的下跌,以及大數(shù)據(jù)處理工具的發(fā)展,如hadoop,spark等,帶來了數(shù)據(jù)處理能力的飛速提升,才導(dǎo)致了現(xiàn)在大數(shù)據(jù)的越來越火。
至于我們說的數(shù)據(jù)挖掘知識和編程語言,這些都是很早以前就已經(jīng)存在的知識,這幾年也沒有得到很令人驚喜的新進(jìn)展(我說的是知識本身,不是指應(yīng)用)。
總之: 大數(shù)據(jù)之所以得到人們關(guān)注,最重要的是數(shù)據(jù)處理工具的進(jìn)步以及數(shù)據(jù)量的累積(尤其是互聯(lián)網(wǎng))
那么是不是說明 掌握編程或者計(jì)算機(jī)工具就是邁入大數(shù)據(jù)的關(guān)鍵路徑呢?
答案:顯然不是,數(shù)學(xué)才是真正的核心知識。
沒錯,數(shù)學(xué)是在數(shù)據(jù)挖掘領(lǐng)域非常重要的甚至是核心的部分,編程只是工具,真的只是工具。 編程語言有好幾十種嗎,但是數(shù)據(jù)挖掘理論知識就那兒點(diǎn)。 你用任何一門語言去實(shí)現(xiàn)你的數(shù)學(xué)思想便可以達(dá)到數(shù)據(jù)挖掘的目標(biāo)。 學(xué)術(shù)研究甚至可以拋棄編程,完全只研究算法(注意:這樣的話會容易造成紙上談兵)。
在使用PhpMyAdmin的時(shí)候經(jīng)常用到數(shù)據(jù)的導(dǎo)入和導(dǎo)出(Export/Import),但是在導(dǎo)入大數(shù)據(jù)的時(shí)候由于php上傳文件的限制和腳本響應(yīng)時(shí)間的限制,導(dǎo)致phpMyAdmin無法導(dǎo)入大數(shù)據(jù)。很多時(shí)候都是由于文件過大,從本地瀏覽上傳導(dǎo)入,容易中斷失敗,有沒有更好的方法呢?
方法:
在phpMyAdmin的目錄下,找到根目錄的config.inc.php文件,
打開config.inc.php文件,查找$cfg['UploadDir'],這個參數(shù)就是設(shè)定導(dǎo)入文件存放的目錄,這里把值設(shè)定為:ImportSQLFile。
在phpMyAdmin目錄下,建立以ImportSQLFile命名的文件夾,
把我們需要導(dǎo)入的數(shù)據(jù)文件,放到ImportSQLFile文件夾下面,非常簡單,
登入phpMyAdmin,選擇需要導(dǎo)入的數(shù)據(jù),點(diǎn)擊導(dǎo)航條上面的“導(dǎo)入”按鈕,
選中“從網(wǎng)站服務(wù)器上傳文件夾ImportSQLFile/中選擇:”選項(xiàng),并需要導(dǎo)入的數(shù)據(jù)文件,
最后點(diǎn)擊“執(zhí)行”,即可導(dǎo)入成功。
注意事項(xiàng)
如果在config.inc.php文件,沒有找到$cfg['UploadDir'],可以自己在文件中添加上去即可。