鍍金池/ 問答/ PHP問答
厭惡我 回答

1,他就是一張圖片,基本款的圖片
2,預(yù)先生成的,服務(wù)器保存各種配置組合對應(yīng)的圖片連接,使用時返回即可。
3,如果是按照上訴所說,不需要啥特殊的技術(shù)了。

當(dāng)然另一種情況,
它服務(wù)器生成,預(yù)先準(zhǔn)備好自行車不同配件的各種型號的圖片,并預(yù)先定義位置和各個配件的層級(比如車輪被車叉擋?。?,然后輸入不同參數(shù),php這邊可以通過GD或者Imagick,來在畫布上繪制車的圖片??梢詫崿F(xiàn),也不難,但是前提提供的素材和資料要很準(zhǔn)確,生成一次之后可以將圖片和配置對應(yīng)緩存起來,后續(xù)就不再重新生成了。

但是你不覺得你就算是寫出了這個程序,為啥不本地直接跑一遍然后把圖片上傳了算了。

如果各個配件的素材你允許后臺自主上傳,然后他在頁面上可見拖動位置,更改層級,然后你保存位置和層級的配置,用戶調(diào)用的時候自動生成,那你還需要一些前端的知識。也可以實現(xiàn)。

荒城 回答

你用vue-cli初始化項目的吧,你仔細(xì)看,是不是已經(jīng)生成項目了,最后一步問你是不是執(zhí)行npm install,你選了,但是運行失敗,這個時候你自己去項目目錄執(zhí)行npm install就行了。

當(dāng) nginx 匹配不到任何 server 規(guī)則的時候,會默認(rèn)采用第一條 server 配置。

所以,你可以在最前面加一個空的 server 就可以了。

server {
    listen 80 ;
    server_name _;
    return 403;
}
喜歡你 回答

package.box和上面的ubuntu.box的區(qū)別是什么?

ubuntu.box不包含你后來安裝的lnmp環(huán)境
package.box包含你后來安裝的lnmp環(huán)境


不知道你有沒有裝過電腦系統(tǒng)。
ubuntu.box就相當(dāng)于系統(tǒng)鏡像文件。vagrant box add ubuntu E:ubuntu.box 之后就可以刪了。
之后安裝的lnmp環(huán)境并不會存儲到ubuntu.box中。
vagrant package打包的package.box相當(dāng)于是對你當(dāng)前的系統(tǒng)做一個備份鏡像,這個box才有你后來安裝的lnmp環(huán)境

尤禮 回答

區(qū)分端口就行了

淚染裳 回答

坑人代碼還原如下

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)建子進(jìn)程失敗");
    } else if ($pid > 0) {
        // 父進(jìn)程
        fclose($pair[0]);
        
        $child = $pair[1];
        
        fwrite($child , "父進(jìn)程問候 " . posix_getpid());
        
        Select::addIo($child , Event::READ , function($ctrl , $socket , $child) use($parent_pid){
            $msg = fread($socket , 65535);
            
            echo "父進(jìn)程領(lǐng)域!父進(jìn)程 {$parent_pid} 當(dāng)前執(zhí)行進(jìn)程 " . posix_getpid() . " 消息:{$msg}" . PHP_EOL;
        } , $child);
    } else {
        // 子進(jìn)程
        fclose($pair[1]);
        $parent = $pair[0];
        fwrite($parent , "子進(jìn)程問候 " . posix_getpid());
        
        Select::addIo($parent , Event::READ , function($ctrl , $socket , $parent) use($parent_pid){
            $msg = fread($socket , 65535);
            
            echo "子進(jìn)程領(lǐng)域!子進(jìn)程 " . posix_getpid() . " 當(dāng)前執(zhí)行進(jìn)程 " . posix_getpid() . " 消息:{$msg}\n";
        } , $parent);
    }
}

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

父進(jìn)程:32140
子進(jìn)程:32141 32142 32143 32144

坑人的結(jié)果:

父進(jìn)程代碼領(lǐng)域下(子進(jìn)程亂入到父進(jìn)程領(lǐng)域?。?/h4>
父進(jìn)程領(lǐng)域!父進(jìn)程 32140 當(dāng)前執(zhí)行進(jìn)程 32142 消息 子進(jìn)程問候 32141
父進(jìn)程領(lǐng)域!父進(jìn)程 32140 當(dāng)前執(zhí)行進(jìn)程 32143 消息 子進(jìn)程問候 32142
父進(jìn)程領(lǐng)域!父進(jìn)程 32140 當(dāng)前執(zhí)行進(jìn)程 32144 消息 子進(jìn)程問候 32143
父進(jìn)程領(lǐng)域!父進(jìn)程 32140 當(dāng)前執(zhí)行進(jìn)程 32140 消息 子進(jìn)程問候 32144

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

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

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

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

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

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

解決方法

在子進(jìn)程中,把從父進(jìn)程拷貝的事件銷毀即可。

for ($i = 0; $i < 4; ++$i)
{
    $pid = pcntl_fork();
    
    if ($pid < 0) {
        throw new Exception("創(chuàng)建子進(jìn)程失敗");
    } else if ($pid > 0) {
        // 父進(jìn)程
        Select::addIo( .... );
        // ...添加相關(guān)事件
    } else {
        // 子進(jìn)程
        // 銷毀從父進(jìn)程拷貝的事件
        Select::clear();
        
        // ....做些什么
    }
}
熟稔 回答

訪問路由給對方,過來方法直接獲取$_POST即可啊

喜歡你 回答

下載下來確實沒有驗證文件實例,你可以自己寫一個或者去百度一下wx_sample.php,歸根結(jié)底還是示例代碼的封裝,例如wx_sample.php

    $token     = "weixin"; // 和后臺配置的token字段一致
    
    $echostr   = $_GET['echostr'];
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce     = $_GET["nonce"];

    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr, SORT_STRING);
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );

    if( $signature == $tmpStr ){
        echo $echostr;
    }else{
        exit();
    }
還吻 回答

Set 什么時候是不能修改的了 ?

悶騷型 回答

就是調(diào)用test3()時定義的。只是你沒有傳參,所以是undefined

巫婆 回答

圖二 ,服務(wù)器端PHP版本過高,因為在PHP7中已經(jīng)完全移除了mysql_*系列函數(shù),導(dǎo)致函數(shù)不存在錯誤。

陪她鬧 回答

otter可指定db,table,column同步數(shù)據(jù)

這里的指定可以指定A庫的B表的C字段同步到D庫的E表的F字段,字段類型一致即可

冷眸 回答
$b = array();
for($i = 0 ; $i < count($a) ; $i++){
    foreach($a[$i] as $key=>$value){
        if(!is_array($value)){
            array_push($b,$a[$i]);
            break;
        }else{
            array_push($b,$value);
        }
    }
}
var_dump($b);
菊外人 回答

connect,用戶連接上之后就去數(shù)據(jù)庫查詢好友相關(guān)的信息返回給用戶

維她命 回答

找到你新安裝的phpphp-config這兩個文件,有可能在/usr/local/opt/php/bin這里,把這兩個文件鏈接到/usr/bin/目錄下。
執(zhí)行以下命令進(jìn)行鏈接,10.11之后的版本需要使用sudo。(假如你新安裝的php和php-config在/usr/local/opt/php/bin目錄下)

sudo ln -f /usr/local/opt/php/bin/php /usr/bin/php
sudo ln -f /usr/local/opt/php/bin/php-config /usr/bin/php-config

完成后,再運行命令php -v查看php版本是不是改變了。

落殤 回答

你可以試試阿里云的OSS服務(wù),我一般都是把大資源扔到OSS上這樣自己的服務(wù)器壓力會減小不少

懷中人 回答

thinkphp我知道是能這樣,laravel我不知道能否實現(xiàn)