首頁>Club>
13
回覆列表
  • 1 # 使用者9871089858895

    首先,我們從邏輯上去看你的問題的前置條件:超過1w行則不寫資料。那麼我大概想了這些幾個情況:1.加鎖缺點:降低效能優點:減少程式碼邏輯複雜度(題主現在這樣超過1w條就刪資料的邏輯,感覺看起來就點糟糕啊,如果整個系統一複雜,這樣的來回寫資料,你確定你的邏輯還維護得下去?建議題主梳理一下程式碼的邏輯流)2.佇列(redis/各類mq等)缺點:引入其他元件,增加系統複雜度,降低穩定性。優點:能夠將web的並行邏輯序列,其實和加鎖差不多,不過更優雅,並且效能上面也更可控。如果題主的系統的邏輯複雜,推薦採用這種。建議:php寫多你會發現,它的邏輯就是一波流的。在它的邏輯層實現過多的重試,等待,以及回寫,會導致php很臃腫。建議要麼在資料庫層上鎖,要麼引入佇列等待,要麼就直接報錯,讓使用者F5重試,如果用ajax重試,幾乎沒有使用者體驗上的問題。那麼來說一下直接報錯的方案。3.建一個計數器表舉例:create table store_count (total int(11) NOT NULL) ENGINE=InnoDB搶計數器:如果我查出來現在總數是2,那麼我 update store_count set total = 3 where total = 2 如果更新成功,說明現在的總行數是3,可以去插表,如果未更新,說明這時已經有其他使用者插入了,直接給使用者報錯,讓他下次請求再來過。缺點:這種方式其實比前兩個更粗暴,前2種方式還是等待的,這種方式直接丟棄了部分使用者流量,帶來的是一個有快取特性的計數器來實現題主提的邏輯。這個計數器在記憶體中效果更佳。建議題主根據自身的系統狀況,和程式碼邏輯,進行效能、開發效率、邏輯成本、維護成本上的取捨。

  • 2 # 使用者3456175603979

    sample code:

    if($del_id!=""){

    $del_num=count($del_id);

    for($i=0;$i

    mysql_query("Delete from news where");

    }

    echo("");

    }else{

    echo("");

    }

    ?>

  • 中秋節和大豐收的關聯?
  • 孩子吃白糖會不會引起啜子裡的痰多啊?