鍍金池/ 問答/ PHP問答
凝雅 回答

$name設為全局變量不就可以了么

痞性 回答

你先把數(shù)組拿出來,進行增刪操作完之后再進行setData

墨小羽 回答

java是內存常駐語言,池化技術比較常見,一般池化技術用在有效控制資源和復用而節(jié)約系統(tǒng)資源開銷;比如
1、假設每一個請求需要操作dba,這個時候每一個并發(fā)都需要一個數(shù)據庫鏈接session,如果系統(tǒng)并發(fā)很大,假設1000,沒有池化技術就會同時有1000個session,這很容易導致系統(tǒng)資源崩潰。用上池化技術后,設置池中最大數(shù)量上限,高并發(fā)下就限制了數(shù)據庫連接session最大數(shù)量了,池化技術核心是復用,這也就不存在session頻繁創(chuàng)建和銷毀而浪費系統(tǒng)資源,另外一般池化技術幾乎都是放在內存中,所以尋找和管理的效率相當高,幾乎沒有io方面導致的性能問題。

2、另外java中還有線程池概念,復用線程用的;高并發(fā)下,既可以有效控制住系統(tǒng)線程過多,也避免了線程創(chuàng)建和銷毀浪費系統(tǒng)資源。


5年沒有搞php開發(fā)了,對于php5后面發(fā)展出來的技術已經沒有任何了解,見諒不懂php-fpm

安淺陌 回答

已解決,是虛擬機掛載共享目錄的問題;
上傳到虛擬機,效果不到0.2s
圖片描述

舊城人 回答
和thinkphp無關,提供兩種方案吧:

SESSION的機制:

  1. 客戶端存儲的COOKIE,是會話生命周期,在會話結束(瀏覽器關閉)清除該COOKIE。
  2. 服務端XXX秒沒有該SESSION的新請求的話,在SESSION的GC流程中清除該SESSION。

方案1

場景:記住密碼(1個月)

在登錄勾選后,在客戶端存儲用戶數(shù)據COOKIE,過期時間和設置記住的時間一直,通過可逆算法生成加密后的用戶數(shù)據:{uid:1},為了安全性,可以通過再添加一個驗證COOKIE用來判斷數(shù)據是否被篡改,該驗證COOKIE,通過不可逆算法(例如md5+salt)將原始數(shù)據加密。

后臺首先檢測登錄狀態(tài),未登錄的話,獲取用戶數(shù)據COOKIE和驗證COOKIE,如果驗證通過,生成對應的SESSION數(shù)據。

方案2

場景:針對后臺需要一直保持狀態(tài)的,防止單據頁面提交過程中因為操作過久,導致SESSION被GC回收,需要重新登陸。

可以在前端寫一個定時器,每X分鐘發(fā)送一個類似心跳包的請求,防止SESSION因為太久未請求被GC回收。

當然這僅是我知道的兩種方案,肯定還是有更多好的方案。

喜歡你 回答

Thinkphp5的路由是從上往下逐個匹配,路由的第四個參數(shù),就可以用來匹配正則表達式。

替身 回答

之所以報錯,是因為目前不能直接通過瀏覽器訪問的。
啟動mongo shell之后直接就可以在shell中操作了。

凹凸曼 回答

直接執(zhí)行shell指令的時候使用執(zhí)行運算符。另外php也有單獨的擴展可以用~

下墜 回答

正如樓上所說,沒有安裝依賴,另外,你應該弄個虛擬主機來訪問,譬如

server {
    listen 80;
    server_name example.com;
    index index.php;
    error_log /path/to/example.error.log;
    access_log /path/to/example.access.log;
    root D:\wamp64\www\monday-shop-master\public;

    location / {
        try_files $uri /index.php$is_args$args;
    }

    location ~ \.php {
        try_files $uri =404;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        fastcgi_index index.php;
        fastcgi_pass 127.0.0.1:9000;
    }
}

PS:一個好看的WNMP

乞許 回答

http://www.wangeditor.com/m/
這款是為手機開發(fā)的富文本
https://ckeditor.com/ckeditor-5/
這個可以用于手機
話說,你這是哪里的考試題?

涼汐 回答

有幾種方式可以做到
1、最簡單的方式,開一個worker進程即監(jiān)聽tcp,又監(jiān)聽websocket,這樣在一個進程里方便互相操作連接傳遞數(shù)據

use Workerman\Worker;
// 監(jiān)聽tcp端口,硬件連這個端口
$iot_worker = new Worker('tcp://0.0.0.0:1234');
// 兩個協(xié)議互通這種方式只能單進程
$iot_worker->count = 1;
// 進程啟動時增加一個5678端口的websocket協(xié)議的監(jiān)聽,網頁用ws連5678端口
$iot_worker->onWorkerStart = function(){
    // 聲明為全局變量,方便其它地方獲取到這個容器對象
    global $ws_worker;
    // 監(jiān)聽5678端口,協(xié)議websocket
    $ws_worker = new Worker('websocket://0.0.0.0:5678');
    // 網頁ws發(fā)來數(shù)據的時候的處理,可根據需要做處理,這里省略
    $ws_worker->onMessage = function($ws_connection, $data){...};
    $ws_worker->listen();
};
// 硬件發(fā)來消息的回調
$iot_worker->onMessage = function($connection, $data){
    // 得到$ws_worker容器
    global $ws_worker;
    // 遍歷容器里的連接給所有網頁推送硬件發(fā)來的數(shù)據
    foreach($ws_worker->connections as $ws_connection) {
        $ws_connection->send($data);
    }
};
// 啟動workerman
Worker::runAll();

以上好處架構清晰簡單,但是只能單進程
參考手冊 http://doc.workerman.net/work...

2、開A B兩組worker進程,A組進程監(jiān)聽tcp,B組進程監(jiān)聽websocket,利用channel通訊,可以參考workerman手冊
http://doc.workerman.net/comp...
http://doc.workerman.net/comp...
好處是可以分布式部署,可以多進程多服務器集群

3、用gatewayWorker,開一組tcp端口的gateway進程+一組websocket的進程,參考手冊
http://doc2.workerman.net/mul...
好處是同樣可以分部署部署,可以多進程多服務器集群,并且gatewayWorker提供了很多長連接直接可以用的接口,非常方便

使勁操 回答

var jsApiParameters = {$pay_data.jsApiParameters};這行前后加個alert看看,估計是這地方的格式問題

巷尾 回答

代碼:

$arr = [
    ['value' => '顏色', 'detailValue' => '', 'attrHidden' => true, 'detail' => ['白色','黑色']],
    ['value' => '包裝', 'detailValue' => '', 'attrHidden' => true, 'detail' => ['大','小']],
    ['value' => '規(guī)則', 'detailValue' => '', 'attrHidden' => true, 'detail' => ['1','2']]
];

function decare($arr){
    $data = [];
    $res = [];
    for ($i=0; $i < count($arr)-1; $i++) { 

        if($i == 0){
            $data = $arr[$i]['detail'];
        }
        //替代變量1
        $rep1 = [];

        foreach ($data as $v) {
            foreach ($arr[$i+1]['detail'] as $g) {
                //替代變量2
                $rep2 = ($i!=0?'':$arr[$i]['value']."_").$v."-".$arr[$i+1]['value']."_".$g;
                $tmp[] = $rep2;
                if($i==count($arr)-2){
                    foreach (explode('-', $rep2) as $k => $h) {
                        //替代變量3
                        $rep3 = explode('_', $h);
                        //替代變量4
                        $rep4['detail'][$rep3[0]] = $rep3[1];
                    }
                    $res[] = $rep4;
                }
            }
        }

        $data = $tmp;
    }
    return [$data,$res];
}
print_r(decare($arr)[1]);

結果:

clipboard.png

拼未來 回答

使用方法1就行了

誮惜顏 回答

普通用戶可以收啊

短嘆 回答

看看是不是code用了兩次,還有種可能,檢查一下后臺的appid

避風港 回答

session在mvc的模式中好用,方便。缺點是客戶端必須支持cookie,而且session默認過期時間就幾十分鐘。

前后端分離、手機app、小程序等,用token好,一份token到處運行,放到緩存還是數(shù)據庫由你。
沒有代碼,參考 sso方案oauth2方案