Re: [請益] 計數器歸零?

看板PHP作者 (Leo)時間15年前 (2009/05/19 11:28), 編輯推噓16(16038)
留言54則, 9人參與, 最新討論串2/2 (看更多)
※ 引述《gyd (ipod touch之路)》之銘言: : 以下是計數器的程式碼 : $c=file("counter.txt"); : $visit=$c[0]+1; : echo "$visit"; : $fp=fopen("counter.txt", "w"); 問題在這個"w" 根據php.net Open for writing only;place the file pointer at the beginning of the file and truncate the file to zero length. If the file does not exist, attempt to create it. 就是說,當執行到 $fp=fopen("counter.txt","w"); 之後 counter.txt 會被清空 這時如果有另一人執行同樣的 php $c=file("counter") 會變成空的陣列 所以 fputs($fp,$c[0]+1); 會將 1 寫入 counter.txt 看起來就好像是歸零一樣XD 解決方法....我不知道XD 或許 file_put_contents() 可以避免這個問題?w : fputs($fp,$c[0]+1); : fclose($fp); : ---------------------------------------- : 想請問一下 : 每過一段時間後我都會發現計數器又從0開始算 : 是code有bug還是? : 請問如何解決或是有更佳的程式寫法? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.71.78.201

05/19 11:32, , 1F
flock 可以解決嘛@@?
05/19 11:32, 1F

05/19 11:38, , 2F
file_put_contents()也會清空...
05/19 11:38, 2F

05/19 12:16, , 3F
如果將檔案設定讀取限制勒?
05/19 12:16, 3F

05/19 12:16, , 4F
一次限定一人讀取?
05/19 12:16, 4F

05/19 12:28, , 5F
multi-thread 裏常談限制或同步,但也會影響效率
05/19 12:28, 5F

05/19 13:05, , 6F
flock可以做到!
05/19 13:05, 6F

05/19 17:04, , 7F
樓樓上的好像很喜歡 multi-thread
05/19 17:04, 7F

05/19 18:45, , 8F
我喜歡的可多了;對 server 來說,同時上千人瀏覽,的確
05/19 18:45, 8F

05/19 18:45, , 9F
是上千個 thread.資料庫也要解決這個問題
05/19 18:45, 9F

05/19 18:46, , 10F
之前高鐵不是出包了?
05/19 18:46, 10F

05/19 19:49, , 11F
解決方式有很多 ~ 不只有multi-thread
05/19 19:49, 11F

05/19 19:50, , 12F
看到你提multi-thread好幾次了 ...
05/19 19:50, 12F

05/19 20:07, , 13F
通常應該會稱作 race condition 啦 XD
05/19 20:07, 13F

05/19 22:17, , 14F
謝謝各位,已嘗試修改,等幾天後看會不會又歸0..XD
05/19 22:17, 14F

05/19 22:39, , 15F
multi-thread 不見得是方法,而是現象;我沒說要用它解
05/19 22:39, 15F

05/19 22:40, , 16F
決,而是我理解的現象已經存在了.當你學的領域多了就
05/19 22:40, 16F

05/19 22:40, , 17F
會開始有名詞借用,好像電學字眼借去磁學用一樣
05/19 22:40, 17F

05/19 22:42, , 18F
當然從更高領域來說,單 CPU 根本沒有 multi-thread
05/19 22:42, 18F

05/19 22:43, , 19F
全都是 time-slide;如果想到 multi-thread,解決方法
05/19 22:43, 19F

05/19 22:43, , 20F
是 critical section,而 flock 的確就是這個東西
05/19 22:43, 20F

05/19 22:44, , 21F
在一些別人的 data-sheet 裏,人家開 API 給你用,就是
05/19 22:44, 21F

05/19 22:45, , 22F
會詳細描述每個狀態;server 跑到哪裏,client 跑到哪
05/19 22:45, 22F

05/19 22:45, , 23F
一次看到兩個都在執行,可以說是遲早要想通的事
05/19 22:45, 23F

05/19 22:46, , 24F
沒想通前,另一個經典問題'怎麼跳轉網頁',就會變很怪
05/19 22:46, 24F

05/19 22:47, , 25F
header('Location:xxx') 會被以goto來理解;其實不是
05/19 22:47, 25F

05/19 22:50, , 26F
cpu 或程序本來就有 thread 概念,不必有這個指令它還
05/19 22:50, 26F

05/19 22:51, , 27F
是有 thread,很多人學程序語言都在想像 goto,while等
05/19 22:51, 27F

05/19 22:51, , 28F
那都是想像一個 thread 跑到哪;然後衍生其他誤會
05/19 22:51, 28F

05/19 22:52, , 29F
我們可以給魚,或者趁機講清楚;我不覺得給魚才正確
05/19 22:52, 29F

05/19 22:53, , 30F
要不然,上次怎麼會有那種錯誤的描述?
05/19 22:53, 30F

05/19 23:14, , 31F
我覺得 你還是說中文好了 ~ multi-thread 可以指很多
05/19 23:14, 31F

05/19 23:14, , 32F
東西 ~ 老是套一堆非專有名詞的英文 ~
05/19 23:14, 32F

05/19 23:15, , 33F
誰知道你講哪個鬼
05/19 23:15, 33F

05/20 00:17, , 34F
那我說多執行緒好了..
05/20 00:17, 34F

05/20 00:17, , 35F
你愛不愛用這個概念我不在乎,因為溝通是要用對方能用
05/20 00:17, 35F

05/20 00:18, , 36F
的字眼,如果你聽不懂,我就換一個字眼;但不代表我的字
05/20 00:18, 36F

05/20 00:18, , 37F
眼錯了.所以上次我沒爭辯什麼,因為只要了解就是最好
05/20 00:18, 37F

05/20 00:19, , 38F
但如果你有點'不許用',而不是聽不懂,那我就得護航了
05/20 00:19, 38F

05/20 00:19, , 39F
因為,或許有些人對這個字眼是了解很快的
05/20 00:19, 39F

05/20 00:20, , 40F
我不是那個意思,上次或許是他問的方式有問題
05/20 00:20, 40F

05/20 00:21, , 41F
導致有誤解的狀況
05/20 00:21, 41F

05/20 00:21, , 42F
只是你提出multi-thread 卻讓我想到別的東西 ~
05/20 00:21, 42F

05/20 00:22, , 43F
那是跟那篇的原PO提出的問題相關好嗎?
05/20 00:22, 43F

05/20 00:23, , 44F
要教人 給魚不見得不是好方法 ~
05/20 00:23, 44F

05/20 00:23, , 45F
可是 你給的釣竿 ~ 卻像給根竹子要人先做釣竿一樣
05/20 00:23, 45F

05/20 00:24, , 46F
降子 ~ 我怕他吸收也有問題吧 ~ 您說是吧 ?!
05/20 00:24, 46F

05/20 00:25, , 47F
上次的主因是我沒耐性看他的程式 XD;我一向很依賴發
05/20 00:25, 47F

05/20 00:25, , 48F
w 兄,隨他去吧(拍肩)
05/20 00:25, 48F

05/20 00:25, , 49F
問者自己的描述.描述得愈好,我了解問題愈快
05/20 00:25, 49F

05/20 00:30, , 50F
我手上有一支程式是這樣的:一個網頁要等待另一個網頁
05/20 00:30, 50F

05/20 00:31, , 51F
的執行結果.這裏有些巧妙的東西要看穿
05/20 00:31, 51F

05/20 00:34, , 52F
這個我另外 PO 文吧..
05/20 00:34, 52F

05/20 00:34, , 53F
呃 不需要吧 ~ 我懂你的意思啦 @@
05/20 00:34, 53F

05/20 01:00, , 54F
你就教一下我另一個問題吧,看有沒有更好的解法
05/20 01:00, 54F
文章代碼(AID): #1A4YTC-s (PHP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1A4YTC-s (PHP)