鍍金池/ 問(wèn)答/ PHP問(wèn)答
孤客 回答

引用下文檔:

config/app.php 配置文件的 debug 選項(xiàng)決定了是否向用戶顯示錯(cuò)誤信息

既然你是 false 那自然看不到報(bào)錯(cuò),可能是你之前給配置弄了緩存

掛念你 回答

一般push上去的.env文件是git被忽略的,需要在服務(wù)器網(wǎng)站根目錄檢查下有沒(méi)有.env,還有就是有些安裝包需要重新發(fā)布生成config文件

笨尐豬 回答

clipboard.png
Route::resource(':version/user','api/:version.User'); //注冊(cè)一個(gè)資源路由,對(duì)應(yīng)restful各個(gè)方法

誮惜顏 回答

現(xiàn)在你是“客戶端”,你要在www.baidu.com這臺(tái)服務(wù)器上打印$_SERVER['HTTP_REFERER']才會(huì)得到你作為客戶端偽造的referer

涼汐 回答
        *{
            padding: 0;
            left: 0;
        }
        body{
            padding-top: 50px;
        }
        .header{
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 50px;
            line-height: 50px;
            text-align: center;
            background-color: red;
            z-index: 10001;
        }
        .layout{
            display: flex;
            position: relative;
        }
        .layout .layout-left{
            flex: 0 0 200px;
            flex-direction:column;
            width: 200px;
            color: #fff;
            background-color: blue;
        }
        .layout .layout-right {
          background-color: yellow;
          overflow-y: auto;
          overflow-x: hidden;
          position: absolute;
          left:215px;
          top: 0;
          bottom: 0;
          right: 0;
          margin: auto;
      }
愚念 回答

謝邀.

不管對(duì)象里面有沒(méi)有子對(duì)象,你可以采用下面的方法搞定

//將對(duì)象序列化,然后轉(zhuǎn)換為數(shù)組
$arr=json_decode(json_encode($obj),true);

通過(guò)數(shù)組方式你很容易訪問(wèn)對(duì)象中的元素。

參考 php對(duì)象轉(zhuǎn)數(shù)組的黑技術(shù)
瘋浪 回答

親測(cè)可行,可能是你配置錯(cuò)了。

  • 配置文件
'urlManager' => [
    'enablePrettyUrl'       => true,
    'enableStrictParsing'   => true,
    'showScriptName'        => false,
    'rules' => [
        # 注意這里還嵌套了一層中括號(hào)
        ['class' => 'yii\rest\UrlRule', 'controller' => [ 'u'=> 'user']],
    ],
],
  • controller
use api\components\rest\Controller;

class UserController extends Controller
{
    public function actionIndex()
    {
        return [
            'code' => 0,
            'message' => 'success',
        ];
    }
}
{
    "code": 0,
    "message": "success"
}
陌如玉 回答

JsonResponse會(huì)自動(dòng)設(shè)置content-type為json/application,不用手動(dòng)設(shè)置.
同時(shí)JsonResponse接收dict對(duì)象,不是字符串.
你需要把json.dumps去掉

怪痞 回答

https://github.com/catfan/Medoo
medoo 只能算一個(gè) PDO 庫(kù)吧,和 ORM 有點(diǎn)差距,但是勝在輕巧,可以很快的上手,也沒(méi)有太復(fù)雜的功能,但是后期拓展性有點(diǎn)弱

https://github.com/gabordemoo...
redbean 定位就是一個(gè) ORM,ORM 該有的的都有了,國(guó)內(nèi)氛圍不是火,中文資料略少,但是英文很全。

https://github.com/illuminate...
database 庫(kù),很全面,laravel 核心組件之一,資料也多,單獨(dú)使用和繼承在框架中使用區(qū)別不大。

https://github.com/doctrine/d...
symfony 默認(rèn) database 庫(kù),很強(qiáng)大,很厲害,很全面,資料都蠻多的,就是略復(fù)雜。

注意我上面的用詞,ORM 和 database 是兩個(gè)東西。
database 是包含了一整套數(shù)據(jù)層功能的集合,比如數(shù)據(jù)遷移、主從、讀寫分離等等。
ORM 只是一個(gè)對(duì)象關(guān)系映射,一個(gè)數(shù)據(jù)操作方式而已。
一般來(lái)說(shuō) ORM 是 database 的一個(gè)子集。

樓主要的應(yīng)該是 database ,推薦 illuminate/database

巴扎嘿 回答

array_keys 獲取數(shù)組所有的鍵值
array_intersect 獲取兩個(gè)數(shù)組相同的元素
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

忘了我 回答

也不太關(guān)乎壓縮的問(wèn)題,很明顯主要還是服務(wù)器的問(wèn)題。

使用下面的 python 腳本,你可以輕松實(shí)現(xiàn)多開(kāi)

# -*- coding: utf-8 -*-
'''
同時(shí)運(yùn)行多個(gè)進(jìn)程,用法:
    python3 xx.py <進(jìn)程數(shù)量> <進(jìn)程啟動(dòng)參數(shù)>


@author: 李毅
'''
import asyncio
from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter, REMAINDER


async def single(wid, cmd):
    p = await asyncio.create_subprocess_exec(*cmd)
    print('#{} pid={} 已經(jīng)啟動(dòng)'.format(wid, p.pid))
    await p.communicate()
    print('#{} pid={}, 代碼={} 已經(jīng)結(jié)束'.format(wid, p.pid, p.returncode))


async def main(loop, args):
    if not args.worker or not len(args.cmd):
        return
    ps = [single(i, args.cmd) for i in range(args.worker)]
    return await asyncio.gather(*ps)


if __name__ == '__main__':
    parser = ArgumentParser(formatter_class=ArgumentDefaultsHelpFormatter)
    parser.add_argument('worker', type=int, help='進(jìn)程數(shù)')
    parser.add_argument('cmd', nargs=REMAINDER, help='命令參數(shù),例如: "sleep 30"')
    loop = asyncio.get_event_loop()
    loop.run_until_complete(main(loop, parser.parse_args()))

舉例:同時(shí)開(kāi)啟 10 個(gè) ping -c4 baidu.com 進(jìn)程

python3 a.py 3 ping -c4 baidu.com

輸出如下

PING baidu.com (123.125.115.110) 56(84) bytes of data.
#1 pid=137 已經(jīng)啟動(dòng)
#2 pid=138 已經(jīng)啟動(dòng)
#0 pid=139 已經(jīng)啟動(dòng)
PING baidu.com (220.181.57.216) 56(84) bytes of data.
PING baidu.com (123.125.115.110) 56(84) bytes of data.
64 bytes from 123.125.115.110 (123.125.115.110): icmp_seq=1 ttl=52 time=38.0 ms
64 bytes from 220.181.57.216 (220.181.57.216): icmp_seq=1 ttl=55 time=36.3 ms
64 bytes from 123.125.115.110 (123.125.115.110): icmp_seq=1 ttl=52 time=38.0 ms
64 bytes from 123.125.115.110 (123.125.115.110): icmp_seq=2 ttl=52 time=37.9 ms
64 bytes from 220.181.57.216 (220.181.57.216): icmp_seq=2 ttl=55 time=36.2 ms
64 bytes from 123.125.115.110 (123.125.115.110): icmp_seq=2 ttl=52 time=37.6 ms
64 bytes from 123.125.115.110 (123.125.115.110): icmp_seq=3 ttl=52 time=37.9 ms
64 bytes from 220.181.57.216 (220.181.57.216): icmp_seq=3 ttl=55 time=36.1 ms
64 bytes from 123.125.115.110 (123.125.115.110): icmp_seq=3 ttl=52 time=37.8 ms
64 bytes from 123.125.115.110 (123.125.115.110): icmp_seq=4 ttl=52 time=37.9 ms

--- baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 37.916/37.955/38.024/0.199 ms
64 bytes from 220.181.57.216 (220.181.57.216): icmp_seq=4 ttl=55 time=36.1 ms

--- baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 36.113/36.218/36.374/0.254 ms
#1 pid=137, 代碼=0 已經(jīng)結(jié)束
#2 pid=138, 代碼=0 已經(jīng)結(jié)束
64 bytes from 123.125.115.110 (123.125.115.110): icmp_seq=4 ttl=52 time=37.7 ms

--- baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 37.647/37.818/38.060/0.249 ms
#0 pid=139, 代碼=0 已經(jīng)結(jié)束
過(guò)客 回答

1、先說(shuō)費(fèi)用成本

以下只討論DV域名型證書(僅驗(yàn)證域名所有權(quán))的費(fèi)用成本,對(duì)于信用卡資訊通常建議使用OV證書
  • a) 免費(fèi)證書有很多,例如let's encrypt、國(guó)內(nèi)各類云下面的首年免費(fèi)證書,let's證書是一個(gè)開(kāi)源公共的免費(fèi)SSL數(shù)字證書項(xiàng)目,指在普及SSL,其不提供保費(fèi),3個(gè)月有效期,需3個(gè)月續(xù)簽一次,但基本保障足夠;
  • b) 國(guó)內(nèi)各類云下面的免費(fèi)證書大多由中級(jí)CA亞洲誠(chéng)信提供的首年免費(fèi)證書、或者是GeoTrust提供的首年免費(fèi)證書,也就是說(shuō)次年需要付費(fèi)或者其它形式的費(fèi)用,也或者是每年免費(fèi)續(xù)簽請(qǐng)留意次年付費(fèi)價(jià)格;
  • c) RapidSSL的30天免費(fèi)試用,這個(gè)品牌比較久遠(yuǎn)了,因DigiCert收購(gòu)Symantec的數(shù)字證書業(yè)務(wù),所以目前這款證書的根CA和B項(xiàng)的根CA都易主為DigiCert,但品牌不受影響,缺點(diǎn)是只可使用30天;
  • d) 利害關(guān)系,infiniSign作為CA的合作伙伴,提供常年[¥39/年的PositiveSSL(https://www.infinisign.com/pr...(Comodo科摩多旗下品牌),可適用于長(zhǎng)期穩(wěn)定的SSL/TLS業(yè)務(wù)需求;

2、BlueHost如何開(kāi)啟HTTPS

因BlueHost采用的是cPanel主機(jī)面板,所以很好找到在SSL/TLS菜單,有以下幾個(gè)配置

  • 私鑰
  • 證書簽名請(qǐng)求
  • 證書
  • 為您的站點(diǎn)(HTTPS)安裝和管理SSL

此項(xiàng)配置,依賴于申請(qǐng)第三方證書,此類資料可在我司官網(wǎng)常見(jiàn)問(wèn)題

另外有些cPanel控制臺(tái)中有一鍵盤部署let's encrypt功能。

愚念 回答

$("#allChoose").click(function(){

    $(".chooseSingle").prop("checked",this.checked);
})
$(".chooseSingle").click(function(){
    var flag=true;
    $(".chooseSingle").each(function() {
        if (!this.checked) {
            flag=false;
        };
    });
     $("#allChoose").prop("checked",flag);
  })
眼雜 回答

注意對(duì)命名空間中的名稱(包含命名空間分隔符的完全限定名稱如 FooBar以及相對(duì)的不包含命名空間分隔符的全局名稱如 FooBar)來(lái)說(shuō),前導(dǎo)的反斜杠是不必要的也不推薦的,因?yàn)閷?dǎo)入的名稱必須是完全限定的,不會(huì)根據(jù)當(dāng)前的命名空間作相對(duì)解析。
請(qǐng)仔細(xì)查看官方文檔
使用命名空間:別名/導(dǎo)入

<?php
namespace foo;

// 如果不使用 "use \ArrayObject" ,則實(shí)例化一個(gè) foo\ArrayObject 對(duì)象
$a = new ArrayObject(array(1)); // 實(shí)例化 foo\ArrayObject 對(duì)象

// 如果需要實(shí)例化 \ArrayObject 對(duì)象,而且不使用 "use \ArrayObject" 就需要
$a = new \ArrayObject(array(1)); // 實(shí)例化 \ArrayObject 對(duì)象
?>
綰青絲 回答

不行,需要引入。
類加載這里跟父子類沒(méi)有任何關(guān)系

尛曖昧 回答

前車之鑒

方案1:websocket

前端開(kāi)個(gè)長(zhǎng)連接,后臺(tái)統(tǒng)計(jì)長(zhǎng)連接時(shí)間。

方案2:ajax輪詢

隔幾秒發(fā)一個(gè)查詢,后臺(tái)記錄第一與最后一個(gè)查詢間隔時(shí)間