鍍金池/ 問答/ PHP問答
神曲 回答

Connection: Close表示當(dāng)前連接的請(qǐng)求處理完畢后斷掉。不是直接斷開


head有2種
1.request的head是給服務(wù)端看的,php通過get_header()獲取
2.response的head是給客戶端看的,php通過header()設(shè)置

所以header('Connection: Close');關(guān)php-fpm什么事

Connection可能不常用
常用的是header('Location:http://xxxxx.com/');
服務(wù)端是沒有跳轉(zhuǎn)這種行為的,只能通過head告知客戶端我要跳轉(zhuǎn)。

要注意的是header不代表結(jié)束執(zhí)行,所以用header進(jìn)行跳轉(zhuǎn)時(shí)要使用exit。
代碼如下:

header('Location:http://xxxxx.com/');exit;
嘟尛嘴 回答

不要下載exe文件,確實(shí)有問題,不確定跟系統(tǒng)環(huán)境有沒有關(guān)系,改下載zip壓縮包解壓后可以正常使用

艷骨 回答

wx.init時(shí)候加上debug: true,看看有沒有什么報(bào)錯(cuò)信息,還有檢查下你們公眾號(hào)后臺(tái)配置的可觸發(fā)支付的URL,是否是當(dāng)前URL
只能是當(dāng)前URL,上層URL無(wú)效

如: www.baidu.com/pay 只適用于 /pay, 而不適用于 /pay/sub
如果是SPA的話,記得把hash也填上

離人歸 回答

MySQL的information_schema庫(kù)中有個(gè)COLUMNS表,里面記錄了mysql所有庫(kù)中所有表的字段信息。所以直接根據(jù)這個(gè)表的信息查各個(gè)表有沒有json這個(gè)字段,然后創(chuàng)建即可。

IF NOT EXISTS( SELECT NULL
            FROM INFORMATION_SCHEMA.COLUMNS
           WHERE table_name = 'tablename'
             AND table_schema = 'db_name'
             AND column_name = 'json')  THEN
  ALTER TABLE `TableName` ADD `json` VARCHAR(255) NOT NULL;
END IF;
冷咖啡 回答

$str = '1234567890';

$pattern = "/(\d{3})(\d{3})(\d{4})/";

echo preg_replace($pattern,"\${1}-\${2}-\${3}",$str);

123-456-7890

黑與白 回答

RewriteEngine On
RewriteRule ^/abc/(about)[0-9]+.html$ /abc/$1.php [L]
如果需要通用一些,可以把(abc)和(about)換成正則匹配

心癌 回答

正常來(lái)說(shuō)c擴(kuò)展絕對(duì)性能要更好一點(diǎn)。但我沒用過。一直在用php-ampqlib

爆扎 回答

socket 和 websocket 又不是一碼事。
websocket 是更上層的協(xié)議,類比 http 協(xié)議。
我記得 websocket 連接的第一步是需要一個(gè) http 請(qǐng)求。

具體我也忘記了。就是給個(gè)思路。你可以自己先研究一下他們的區(qū)別。

北城荒 回答

這個(gè)答案說(shuō)可以多進(jìn)程https://segmentfault.com/q/10...

這篇文章還可以:https://laravel-china.org/art...

爛人 回答

存儲(chǔ)過程的優(yōu)點(diǎn)主要包括以下幾點(diǎn):

第一點(diǎn),性能提高。這是相對(duì)于不適用存儲(chǔ)過程來(lái)說(shuō)的,因?yàn)榇鎯?chǔ)過程在創(chuàng)建的時(shí)候就編譯好了,而后每次調(diào)用都不會(huì)再次編譯,這相對(duì)于傳統(tǒng)的SQL語(yǔ)句中每次調(diào)用都需要編譯的情況來(lái)說(shuō),性能提高了何止一點(diǎn)兩點(diǎn)。

第二點(diǎn),重用性強(qiáng)。存儲(chǔ)過程使用名字即可使用,也就是傳說(shuō)中的“一次編寫,隨便調(diào)用”。這樣不僅提高了重用性,還減少了出錯(cuò)的幾率,也會(huì)加快開發(fā)速度,可以說(shuō)是一件非常好的事情。

第三點(diǎn),減少網(wǎng)絡(luò)流量。這一點(diǎn)對(duì)于小數(shù)據(jù)量的時(shí)候一般體現(xiàn)不出來(lái),那么當(dāng)數(shù)據(jù)量較大的時(shí)候,我們會(huì)發(fā)現(xiàn)由于使用存儲(chǔ)過程比使用SQL語(yǔ)句會(huì)使用更少的字節(jié)數(shù),因此它會(huì)降低傳輸?shù)臄?shù)據(jù)量。

第四點(diǎn),安全性提高。由于存儲(chǔ)過程也可以使用權(quán)限控制,而且參數(shù)化的存儲(chǔ)過程可以防止SQL注入攻擊,也在一定程度上保證了安全性。

第五點(diǎn),靈活性增強(qiáng)。由于存儲(chǔ)過程可以使用流程控制語(yǔ)句來(lái)編寫,導(dǎo)致它有著很強(qiáng)的靈活性,可以根據(jù)實(shí)際情況來(lái)執(zhí)行不同的SQL語(yǔ)句,而不是只能單純的簡(jiǎn)單的執(zhí)行命令。而且該存儲(chǔ)過程還可以修改其邏輯而其他部分不用改變,也就是說(shuō),我們的表的結(jié)構(gòu)改變了,我們只需要修改相應(yīng)的存儲(chǔ)過程即可,我們的Java或者PHP等程序不需要改變。

第六點(diǎn),當(dāng)業(yè)務(wù)復(fù)雜的時(shí)候,存儲(chǔ)過程會(huì)減少工作量,為什么呢,原因很簡(jiǎn)單,如果我們不適用存儲(chǔ)過程,那么就會(huì)導(dǎo)致我們先從數(shù)據(jù)庫(kù)中取出來(lái)數(shù)據(jù),然后經(jīng)過計(jì)算,再放入到數(shù)據(jù)庫(kù)中,這個(gè)開銷還是蠻大的,這中間的開銷包括我們的Java或者PHP程序連接數(shù)據(jù)庫(kù)獲取結(jié)果集等若干操作,如果我們使用了存儲(chǔ)過程,那么就沒有那么多事了,直接在mysql內(nèi)就搞定了。

缺點(diǎn):
第一點(diǎn),工作量加大。這里并不是說(shuō)我們把程序該做的事讓mysql去做不好,而是mysql本身并沒有很像樣的IDE來(lái)開發(fā)我們的存儲(chǔ)過程,我們很多時(shí)候還是需要手寫,這樣就會(huì)比較麻煩,而且存儲(chǔ)過程的調(diào)試也是一個(gè)問題,沒有很像樣的調(diào)試工具。

第二點(diǎn),優(yōu)勢(shì)不明顯。運(yùn)行速度上,對(duì)于大多數(shù)的語(yǔ)句緩存來(lái)說(shuō),編譯sql的時(shí)間開銷并不是很大,但是執(zhí)行存儲(chǔ)過程還需要檢查權(quán)限等一些其他開銷,所以,對(duì)于很簡(jiǎn)單的sql,存儲(chǔ)過程并沒有很大優(yōu)勢(shì)。

第三點(diǎn),贅余功能。對(duì)web程序來(lái)說(shuō),我們連接數(shù)據(jù)庫(kù)的用戶往往就是同一個(gè),不需要太多的安全機(jī)制,所以,對(duì)于安全上的檢測(cè)看上去很好,實(shí)際上優(yōu)點(diǎn)多余。

第四點(diǎn),小型程序完全無(wú)用。對(duì)于小型web應(yīng)用來(lái)說(shuō),它的使用價(jià)值就更小了,反而會(huì)拖累開發(fā)進(jìn)度。

第五點(diǎn),對(duì)于運(yùn)維上。當(dāng)我們的程序要更換數(shù)據(jù)庫(kù)的時(shí)候,它的移植性相對(duì)于不適用存儲(chǔ)過程要復(fù)雜一些,對(duì)于維護(hù)上,由于是在db端,因此比server端的程序更好維護(hù)一些。

還吻 回答

審題

題注的需求描述的不是特別清楚,所以根據(jù)現(xiàn)有的信息我來(lái)完整描述下題主的需求。

題主的表: pq_coupon table , 有幾個(gè)核心字段 id,status,merchant_id

題主嘗試的查詢寫法:

$coupon->whereIn('id',$res1['coupon_id'])->where('status',2)->groupBy('merchant_id')->get();

$coupon->whereIn('id',$res1['coupon_id'])->where('status',2) 會(huì)找出一批優(yōu)惠券數(shù)據(jù),但是其中 merchant_id 存在很多重復(fù)的值。

所以題主想 每個(gè)店鋪下(merchant_id) 只找出一條優(yōu)惠券即可。

不知道是否理解正確,正確了再說(shuō)解題方法。

失心人 回答

你這是正則寫錯(cuò)了,'/src="(.+.(png|jpg))"+?/'其中只有第一個(gè),也就是外面的捕獲組使用了非貪婪模式,里面的'.+'沒使用非貪婪模式,改成'.+?'應(yīng)該就可以了。(這個(gè)點(diǎn)不睡也是沒誰(shuí)了。。)

愚念 回答

導(dǎo)出代碼最后加一個(gè)exit即可。

header("Pragma: public");  
header("Expires: 0");  
header("Cache-Control:must-revalidate, post-check=0, pre-check=0");  
header("Content-Type:application/force-download");  
header("Content-Type:application/vnd.ms-excel");  
header("Content-Type:application/octet-stream");  
header("Content-Type:application/download");;  
header('Content-Disposition:attachment;filename="'.$filename.'.xls"');
header("Content-Transfer-Encoding:binary");
$objWriter->save('php://output');
exit;

憶往昔 回答

問題已解決。是學(xué)校網(wǎng)絡(luò)管理員調(diào)整防火墻策略導(dǎo)致

薄荷綠 回答

1、按 F12 查看網(wǎng)絡(luò)請(qǐng)求返回結(jié)果
2、TP 框架應(yīng)該有返回 json 數(shù)據(jù)的辦法
3、前后端接口通信返回 布爾值 不靠譜,通過返回 code 前端去判斷請(qǐng)求成功還是失敗

萢萢糖 回答

先計(jì)算好一批偽隨機(jī)值放在Redis中,調(diào)用來(lái)了之后直接從Redis中返回?

不需要,我們這里的接口是同一套,前后端交換JSON。