1. 怎樣用php實現模擬微信搶紅包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$money = 100; // 總金額
$copies = 10; // 份數
$result = []; // 結果
$min = 1; // 單包最少內
$max = 20; // 單包最多容
while($copies--){
$take = mt_rand(max(1, $min), min($max, $money));
$money -= $take;
if($money <= 0){
$take -= 0 - $money;
$money += 1;
}
$result[] = $take;
}
var_mp($result);
// array(10) { [0]=> int(9) [1]=> int(9) [2]=> int(15) [3]=> int(9) [4]=> int(13) [5]=> int(3) [6]=> int(8) [7]=> int(17) [8]=> int(12) [9]=> int(2) }
2. php 如何動態地設置優惠券的開始時間和結束時間
你可以將優惠券的 開始、結束時間 存儲在 資料庫中
3. php實現小米搶購功能
主要解決方法:
1.需要把實體店對應的優惠券數量以記錄的形式呈現,表1:Max_Table( ID, storeID,apply_count ,apply_code)。表2:apply_form(apply_code,store_id,phone_numbe)該表主要記錄哪個用戶用什麼手機號碼申請了優惠券,優惠券碼是什麼。
2.創建資料庫時要使用InnoDB存儲引擎
3.在資料庫中創建存儲過程,在存儲過程中使用事務,在事務中要先查詢是否發放完畢,為避免多進程同時訪問某記錄中的數量而引起的問題,我使用for update。使用該語句,若事務A訪問訪問該記錄時,事務B會阻塞,直到事務A完畢後,從而達到了<並轉串>的操作。
以下是解決該問題的核心存儲過程,其中有2個入參,1個出參。
CREATE DEFINER=`sa`@`localhost` PROCEDURE `p_apply_code`(IN `p_store_id` varchar(30), IN `p_phone_number` varchar(20),OUT return_val varchar(30))
BEGIN
#Routine body goes here...
declare p_apply_count int(4) default 0;
declare encode_apply_code varchar(16) default '';
start transaction ;//開始事務
SELECT apply_count into p_apply_count FROM max_table WHERE store_id=p_store_id for update;
if (p_apply_count =0 ) THEN
insert into max_table(store_id,apply_count) values(p_store_id,0);
end if;
IF( p_apply_count<=9) THEN
set encode_apply_code='優惠券碼的生成規則',
insert into apply_form(apply_code,store_id,phone_number) values(encode_apply_code,p_store_id,p_phone_number);
update max_table set apply_count=apply_count+1 where store_id=p_store_id;
set result=encode_apply_code2;
END IF;
set return_val=result ;
commit; //提交事務,同時釋放for update鎖
END
4.PHP調用MySQL存儲過程
$sql = 'call p_apply_code('."'$store_id',"."'$phonenumber',"."@return_val".'); ';
$db->query($sql);
$apply_code=$db->getOne('select @return_val');
4. 求簡單PHP代碼發放優惠券
你這種需求,我只能說,花點錢找外包叫人給你做,免費的沒人會給你做,要花不少時間的。
5. php如何處理搶購類功能的高並發請求
php處理高並發問題可以有幾種方法
表鎖 當有用戶請求購買時鎖表 購買完成或者退出購買流程時專解鎖屬
文件鎖 與表鎖類似當有用戶請求購買時打開文件鎖文件 購買完成或者退出購買流程時解鎖 當並發發生時其他用戶再次請求會發現文件被鎖 表示已經有人正在搶購讓用戶稍後再試
redis隊列 這個是比較普遍也是比較科學的方法 redis是單線程 key-value形式的nosql資料庫 由於是單線程所以適合用來處理高並發問題 具體建議了解下redis
6. php如何實現十個人搶購一百件商品
在搶購前先對搶購者判斷一下,這人搶購了幾件,如果沒超過10件,就給搶,超過了,不給搶。
7. thinkphp如何做搶購
你可以在類中把復公共的制方法按平常的方法寫下來
class ExampAction extends Action {
public function fun_public(){
......
}
}
然後在這個類中的其他方法中實例化這個類,用實例化後的對象調用這個方法:
class ExampAction extends Action {
public function fun_public(){
......
}
//下面這個方法調用公共方法
public function another_fun(){
$Exa = A("Examp");
$Exa->fun_public();
.....
}
}
這樣就行,分別在本類中其他的方法中前兩句都加上another_fun方法中的前兩句就行了
你可以學習下thinkphp手冊中的「跨模塊調用」。
8. PHP如何實現電子商城優惠卷
PHP生成唯一的促銷/優惠/折扣碼(附源碼)
每一個電子商務網站,現在有一種或多種類型的優惠/折扣/優惠券系統,給大家分享一下如何在PHP生成唯一的促銷/折扣碼。主要是實現一個優惠碼系統,可用於跟蹤用戶來自某些特定的來源,例如有些主機促銷的時候鏈接到別的頁面會有優惠碼生成,還有更多的促銷代碼等。因此,今天將討論這樣一個優惠碼的實現過程
考慮的需求
代碼應該很容易記住,因此保持短的長度是一個好主意,使用戶可以很容易地記住它
沒有特殊字元!它應該是字母數字組合,因為它會永遠是為用戶更容易記住
長度推廣/折扣代碼的正確。沒有一個標準的長度,因為它取決於你想生成的長度,例如,如果你想生成1000代碼的代碼,那麼你需要在至少4個字元代碼。促銷/優惠碼長度通常為4到8個字元,但它取決於您的要求。
代碼如下:
<?php
/**
* @param int
$no_of_codes//定義一個int類型的參數 用來確定生成多少個優惠碼
* @param array
$exclude_codes_array//定義一個exclude_codes_array類型的數組
* @param int $code_length
//定義一個code_length的參數來確定優惠碼的長度
* @return array//返回數組
*/
function
generate_promotion_code($no_of_codes,$exclude_codes_array='',$code_length = 4)
{
$characters = "";
$promotion_codes = array();//這個數組用來接收生成的優惠碼
for($j = 0 ; $j <
$no_of_codes; $j++)
{
$code = "";
for ($i = 0; $i < $code_length;
$i++)
{
$code .= $characters[mt_rand(0, strlen($characters)-1)];
}
//如果生成的4位隨機數不再我們定義的$promotion_codes函數裡面
if(!in_array($code,$promotion_codes))
{
if(is_array($exclude_codes_array))//
{
if(!in_array($code,$exclude_codes_array))//排除已經使用的優惠碼
{
$promotion_codes[$j] = $code;將生成的新優惠碼賦值給promotion_codes數組
}
else
{
$j--;
}
}
else
{
$promotion_codes[$j] =
$code;//將優惠碼賦值給數組
}
}
else
{
$j--;
}
}
return
$promotion_codes;
}
echo '<h1>Promotion / Discount
Codes</h1>';
echo '<pre>';
print_r(generate_promotion_code(50,'',4));
echo '</pre>';
?>
該代碼由三個參數組成,
第一個參數是你要生成優惠碼的個數(在這里是生成50個)。第二個參數exclude
array,確保在當前列表中的生成唯一優惠碼,所以如果你已經資料庫中有一些未使用的代碼,你可以把它傳遞給exclude。最後一個參數是優惠碼的的長度。這個函數將返回規定長度的優惠碼
這里是4位的優惠碼。
這里我已經使用數字和大寫字母組合,賦值給$characters的字元串,你可以使用小寫字母或任何其他的字母組合試用。此功能的作用是生成唯一的優惠碼。這個是PHP版本的。
9. php搶購如何實現
前台就不說了,後台就是某一段代碼只執行一次,或者資料庫裡面某一個欄位的狀態發生改變。。。。再然後就是考慮並發了。
10. php 虛擬搶購商品 能提供下思路嗎
首先你要知道搶購商品需要提交的參數,然後每個賬號去登陸下,抓包拿到session後就可以用curl請求帶上cookie模擬搶購了