鍍金池/ 問答/ PHP問答
荒城 回答

想到兩個(gè)方法:

方法一:
如果是比較新的內(nèi)核版本3.9以上,支持SO_REUSEPORT,那么你可以:

  1. 啟動(dòng)一個(gè)新的進(jìn)程,也監(jiān)聽相同的端口。
  2. 新的進(jìn)程啟動(dòng)后給老的進(jìn)程發(fā)個(gè)信號(hào)。
  3. 老的進(jìn)程收到后停止接收新的連接請(qǐng)求(停止Accept,關(guān)閉Listen Socket),
    等所有已經(jīng)存在的連接處理完自動(dòng)退出。

如果不支持SO_REUSEPORT,不同進(jìn)程無(wú)法同時(shí)監(jiān)聽同一個(gè)端口,則需要在老的進(jìn)程內(nèi)fork一個(gè)子進(jìn)程,并且把負(fù)責(zé)監(jiān)聽的文件描述符傳給新進(jìn)程。
這個(gè)方法可以實(shí)現(xiàn)你的需求,但需要比較多的修改Golang封裝的net/http等系統(tǒng)庫(kù),技術(shù)復(fù)雜度比較高。
好處是不需要nginx參與,對(duì)它透明。

方法二:
可以同時(shí)運(yùn)行兩個(gè)或更多個(gè)http server,同時(shí)提供服務(wù),讓nginx做負(fù)載均衡,其中有一個(gè)需要升級(jí)重啟時(shí),就發(fā)個(gè)信號(hào),收到信號(hào)后停止接收新請(qǐng)求,已有請(qǐng)求處理完畢正常退出就可以了。這個(gè)過(guò)程不需要修改nginx配置,也不需要reload nginx。
這個(gè)方法也需要改Golang封裝的net/http,但修改量相比方法一會(huì)小很多。

蝶戀花 回答

代碼沒看出問題, 是不是 EventBase::LOOP_ONCE 設(shè)錯(cuò)了?
是每個(gè)客戶端連接都能觸發(fā)么? 還是連上一個(gè)程序就退了?

<?php
$src = '目標(biāo)目錄';
$d = new RecursiveDirectoryIterator($src);
$i = new RecursiveIteratorIterator($d);
foreach ($i as $name => $file) {
    // 檢查下如果不是目錄,就用unlink刪除
    if (!is_dir($name)) {
        unlink($name);
    }
}
不舍棄 回答
  1. 構(gòu)造函數(shù)里面的$username = ''$username的默認(rèn)參數(shù),可以使用new User()new User('abc')來(lái)給User類的$username屬性賦值
  2. 后面的$username = []是一種好的習(xí)慣,對(duì)$username進(jìn)行初始化,參見手冊(cè)PHP基礎(chǔ),初始化變量
<?php
function test($res){
    $ret = [];
    if($res){
        $ret = [1,2,3];
    }
    return $ret;
}

function test2($res){
    if($res){
        $ret = [1,2,3];
    }
    return $ret;
}
var_dump(test(false));
var_dump(test2(false));
尤禮 回答

升級(jí)到了webapck3.0,使用了extract-text-webpack-plugin插件。此插件在3.0中必須配置和一個(gè)叫allChunks: true的參數(shù)

https://segmentfault.com/a/11...

尤禮 回答

沒用過(guò) COM 但是提示 4323 行錯(cuò)誤,仔細(xì)看看

敢試 回答

個(gè)人拙見:
1.使用redis緩存商品的數(shù)組信息,首先 如果必要,只緩存商品的部分信息,提高網(wǎng)站的加載速度,比如說(shuō)商品的列表頁(yè)面,只需要商品的名稱,價(jià)格部分信息,在詳情頁(yè)面因?yàn)槭菃未尾樵兯俣冗€是比較快的.
2.相對(duì)來(lái)說(shuō),商城不做一些高并發(fā),秒殺等業(yè)務(wù),緩存信息如上回答,用文件做緩存相對(duì)比較理想.
3.redis如果做整個(gè)頁(yè)面的數(shù)據(jù)緩存用的還是相對(duì)來(lái)說(shuō)比較少的

文檔里已經(jīng)寫的很清楚了
http://php.net/manual/zh/func...

Note: 如果 magic_quotes_sybase 項(xiàng)開啟,反斜線將被去除,但是兩個(gè)反斜線將會(huì)被替換成一個(gè)。 一個(gè)使用范例是使用
PHP 檢測(cè) magic_quotes_gpc 配置項(xiàng)的 開啟情況(在 PHP 5.4之
前默認(rèn)是開啟的)并且你不需要將數(shù)據(jù)插入到一個(gè)需要轉(zhuǎn)義的位置(例如數(shù)據(jù)庫(kù))。例如,你只是簡(jiǎn)單地將表單數(shù)據(jù)直接輸出。

維他命 回答

一點(diǎn)都不奇怪啊,這種情況經(jīng)常發(fā)生。

float a = 0.999999999,a為1,但是將a強(qiáng)制轉(zhuǎn)換為整數(shù)的時(shí)候,結(jié)果為0。主要是轉(zhuǎn)整數(shù)的時(shí)候是截?cái)?/p>

薔薇花 回答

json_encode轉(zhuǎn)換成json字符串

久舊酒 回答

這里的rand并不是作為驗(yàn)證碼生成的參數(shù),只是一個(gè)防止緩存的手段;

驗(yàn)證碼的隨機(jī)生成是在code.php里面實(shí)現(xiàn)的,與請(qǐng)求地址里的的rand并沒有關(guān)系

嘟尛嘴 回答

1 先用正則表達(dá)式,按照 數(shù)字冒號(hào)(1:,2:)拆分單條信息
得到結(jié)果:
[
'1:公司名:An網(wǎng)站:wwwn電話:123456789n',
'2:公司名:An網(wǎng)站:wwwn電話:123456789nn',
'3:公司名:An網(wǎng)站:wwwn電話:123456789地址:abbn',
'4:公司名:An網(wǎng)站:wwwn電話:123456789',
]

2 取出每一項(xiàng)目,將數(shù)字冒號(hào)(1:)替換為空
如:'1:公司名:An網(wǎng)站:wwwn電話:123456789n',

3 按照n拆分,再按照:區(qū)分鍵值對(duì)。
如:'公司名:An網(wǎng)站:wwwn電話:123456789n',
得到結(jié)果:[{'公司名':'A'},{'網(wǎng)站':'www'},{'電話':'123456789'}]

陌南塵 回答

你把你的帶寬監(jiān)控圖也發(fā)出來(lái)看下啊。。是不是貸款跑滿了。。

悶騷型 回答

foreach循環(huán)如果匹配到2個(gè)以上的敏感詞,你的result變量只屏蔽了最后一個(gè)詞