鍍金池/ 問答/ PHP問答
舊時光 回答

上面的已經(jīng)說得很清楚了
preg_replace — 執(zhí)行一個正則表達式的搜索和替換
http://php.net/manual/zh/func...

冷咖啡 回答

你想學(xué)習這兩種模式,你得知道這兩種模式是什么,這兩年最火的莫過于vue.js了,在mvvm中,沒有dom這一概念,所有的交互都是通過控制來實現(xiàn)的。想學(xué)習這個,首先得摸熟原生js,其次你得擺脫jquery的束縛,因為vue.js是完全不用jquery的。
如果非要說其它語言的話,你得看看es6,別的就不用了,當然前提是html5,css3,原生js都得會的情況下。
不用看什么書籍,你去把官方文檔打一遍,然后看看慕課網(wǎng)上的教程。構(gòu)思的話,你從數(shù)據(jù)入手,不要想著操作dom,也就是操作html里面的內(nèi)容,雙向綁定的東西,html跟著數(shù)據(jù)走的。
模板視圖控制器是相輔相成的,一個界面的組成肯定要有視圖,然后你用控制器控制,然后制成模板然后調(diào)用,你說的mvc走的就是這個流程。

綰青絲 回答

docker 和 docker-compose 其實算是同一種方式,docker 是通過命令行起了一個 docker 容器,而 docker-compose 只是一種容器的編排方式。他們二者都會起一個容器,里面跑著 php 的一套環(huán)境,和項目的代碼

同樣 compose 和手動安裝也是,手動安裝需要下載框架源碼,然后 composer install 安裝框架依賴的 compose 包,而 composer install 則是把這一些事情都給你搞完了。

綜上,如果你自己本地有 PHP 的運行環(huán)境的話,則直接 composer install
就可以了,而你本地沒有環(huán)境或者需要安裝新環(huán)境的話則使用 docker-compose。

愛是癌 回答

給你一個輪子:Element-angular。
他們的做法是:

 upload(path: string, file: File): Observable<any> {
    const req: HttpRequest<{}> = new HttpRequest('POST', path, file, {
      headers: this.headers,
      reportProgress: true,
      withCredentials: this.withCredentials,
    })
    return this.http.request(req)
  }

直接傳文件,并未做過多的處理。

魚梓 回答

axios發(fā)出的請求的數(shù)據(jù)格式是json字符串,在調(diào)試工具查看請求頭的時候可以看到發(fā)送的數(shù)據(jù)為Request Payload
兩種解決方法,一種如上@xialeistudio所說后臺使用json_decode解碼,還有一種是前端使用querystringqs轉(zhuǎn)換數(shù)據(jù)格式為Form Data,這樣后臺就能直接只用$_POST接收參數(shù)

離夢 回答

看少俠這代碼,RoomBusiness這個類應(yīng)該是以單例模式寫的吧,所以兩種方法沒區(qū)別

舊言 回答

用的Wordpress嗎,產(chǎn)生這種問題,無非就是將域名硬編碼了。若是域名是配置的話,看看配置文件或者數(shù)據(jù)庫里面的值

呆萌傻 回答

login方法中屬性和方法訪問符"->"左右有空格,語法錯誤。

笑忘初 回答

你在php.ini 里面把 session.cookie_lifetime 和 session.gc_maxlifetime設(shè)置的超大就行,例如999999999

卟乖 回答
如果你用nginx,可以利用fastcgi處理

主要用兩個方法:

//這里寫同步代碼

fastcgi_finish_request();
set_time_limit(0);

//這里寫異步代碼
墨小白 回答

vagrant 和 virtualBox 兩個最好保持同樣最新版本.

就不會有問題了.

淚染裳 回答

坑人代碼還原如下

use Event\Event;
use Event\Select;

$pid_list = [];
$parent_pid = posix_getpid();

for ($i = 0; $i < 4; ++$i)
{
    $pair = stream_socket_pair(STREAM_PF_UNIX , STREAM_SOCK_STREAM , STREAM_IPPROTO_IP);
    
    $pid = pcntl_fork();
    
    if ($pid < 0) {
        throw new Exception("創(chuàng)建子進程失敗");
    } else if ($pid > 0) {
        // 父進程
        fclose($pair[0]);
        
        $child = $pair[1];
        
        fwrite($child , "父進程問候 " . posix_getpid());
        
        Select::addIo($child , Event::READ , function($ctrl , $socket , $child) use($parent_pid){
            $msg = fread($socket , 65535);
            
            echo "父進程領(lǐng)域!父進程 {$parent_pid} 當前執(zhí)行進程 " . posix_getpid() . " 消息:{$msg}" . PHP_EOL;
        } , $child);
    } else {
        // 子進程
        fclose($pair[1]);
        $parent = $pair[0];
        fwrite($parent , "子進程問候 " . posix_getpid());
        
        Select::addIo($parent , Event::READ , function($ctrl , $socket , $parent) use($parent_pid){
            $msg = fread($socket , 65535);
            
            echo "子進程領(lǐng)域!子進程 " . posix_getpid() . " 當前執(zhí)行進程 " . posix_getpid() . " 消息:{$msg}\n";
        } , $parent);
    }
}

產(chǎn)生的進程信息:

父進程:32140
子進程:32141 32142 32143 32144

坑人的結(jié)果:

父進程代碼領(lǐng)域下(子進程亂入到父進程領(lǐng)域!)

父進程領(lǐng)域!父進程 32140 當前執(zhí)行進程 32142 消息 子進程問候 32141
父進程領(lǐng)域!父進程 32140 當前執(zhí)行進程 32143 消息 子進程問候 32142
父進程領(lǐng)域!父進程 32140 當前執(zhí)行進程 32144 消息 子進程問候 32143
父進程領(lǐng)域!父進程 32140 當前執(zhí)行進程 32140 消息 子進程問候 32144

子進程代碼領(lǐng)域(正確)

子進程領(lǐng)域!子進程 32141 當前執(zhí)行進程 32141 消息 父進程問候 32140
子進程領(lǐng)域!子進程 32142 當前執(zhí)行進程 32142 消息 父進程問候 32140
子進程領(lǐng)域!子進程 32143 當前執(zhí)行進程 32143 消息 父進程問候 32140
子進程領(lǐng)域!子進程 32144 當前執(zhí)行進程 32144 消息 父進程問候 32140

分析:為什么子進程會調(diào)用在父進程定義的事件呢??

這得仔細分析 for 循環(huán)!

  • 第一次循環(huán),父進程向 Event::$events 添加子進程監(jiān)聽事件,子進程平行執(zhí)行。對產(chǎn)生的第一個子進程來說, Event::$events 為空,所以沒有拷貝到父進程的事件。
  • 第二次循環(huán),父進程向 Event::$events 再次添加監(jiān)聽子進程事件,此時,對產(chǎn)生的第二個子進程來說,Event::$events 存在一個事件!從父進程拷貝了一個事件。
  • 第三次循環(huán),父進程再次向 Event::$events 再次添加監(jiān)聽子進程事件,此時,對產(chǎn)生的三個子進程來說, Event::$events 存在兩個事件!從父進程拷貝了兩個事件。
  • 第四次循環(huán),父進程再次向 Event::$evnets 添加事件,此時,相對產(chǎn)生的第四個子進程來說,Event::$events 存在三個事件,從父進程拷貝了三個事件。

由上可知,子進程實際也在監(jiān)聽從父進程拷貝的事件,如果事件觸發(fā),那么監(jiān)聽該事件的父子進程實際上都會觸發(fā)。從而出現(xiàn)了令人郁悶的:子進程亂入到了父進程的領(lǐng)域。

解決方法

在子進程中,把從父進程拷貝的事件銷毀即可。

for ($i = 0; $i < 4; ++$i)
{
    $pid = pcntl_fork();
    
    if ($pid < 0) {
        throw new Exception("創(chuàng)建子進程失敗");
    } else if ($pid > 0) {
        // 父進程
        Select::addIo( .... );
        // ...添加相關(guān)事件
    } else {
        // 子進程
        // 銷毀從父進程拷貝的事件
        Select::clear();
        
        // ....做些什么
    }
}
陌離殤 回答
  1. 按照特定規(guī)律提取,比如前幾位是名字,后幾位是地址

  2. 將所有地址存起來,然后檢索詞,找得到就是地址,找不到就是名字,但是不排除人名和地名相同的情況

簡單的做法就是用特殊符號將名字和地址分隔開來,比如空格或者冒號之類的,然后做字符串截取就可以了

念初 回答

SELECT FROM question WHERE id >= ((SELECT MAX(id) FROM question)-(SELECT MIN(id) FROM question)) RAND() + (SELECT MIN(id) FROM question) and id not in(1,3) LIMIT 2

參照url:https://www.cnblogs.com/leezh...

墨小羽 回答

不寫模塊名,默認當前模塊。
不寫控制器,默認當前控制器。

毀了心 回答

拿到code需要用戶同意的,你想跳過那步是不可以的。

浪婳 回答
  1. 描述不清楚 揣測回答

select * from table where 條件 orderby id DESC 點擊量 DESC limit 50
循環(huán)的時候 拿第一條不就行了?

假如不想打亂時間順序。
去掉點擊量排序,
關(guān)注下mysql的max()的用法

  1. 別的解決思路:

你可以先按照時間順序 加點擊量順序 取出 50條數(shù)據(jù) 。取第一條點擊數(shù)最大的
然后根據(jù)php函數(shù)按時間重排序

array_multisort()
嘟尛嘴 回答

已找到解決問題答案,每次load完excel文件并且讀取完成以后,用load產(chǎn)生的phpexcel對象調(diào)用一下phpexcel本身提供的disconnectWorksheets()方法,會為phpexcel的屬性賦予null值,釋放內(nèi)存資源

愚念 回答

1.可以ping下www.lyt7y.cn 看看是否有響應(yīng)
2:如果沒有響應(yīng),可能是hosts沒有進行ip綁定,需要將域名綁定到hosts中

127.0.0.1 www.lyt7y.cn

3:如果綁定過了,可以檢查下系統(tǒng)代理