鍍金池/ 問答/ PHP問答
涼薄 回答

event 是類名, 表示$event 這個變量應(yīng)該是event的一個對象,

就好像 C 語言里面的 int sum (int a, int b) ; 里面的int

局外人 回答

mysql查詢是在磁盤上面進(jìn)行IO操作,php循環(huán)是在內(nèi)存中進(jìn)行,你的第一個方法的循環(huán)查詢會慢一些。 如果數(shù)據(jù)庫中數(shù)據(jù)量過大,內(nèi)存占用過大,建議分片讀取處理

厭惡我 回答

env('DB_USERNAME', 'forge') 代碼是在 .env 文件里沒有配置 DB_USERNAME 時才采用第二個參數(shù)的值。

你已經(jīng)通過 .env 文件里的數(shù)據(jù)配置項(xiàng)去配置數(shù)據(jù)庫信息,所以再 database.php 去修改配置是沒有作用的。

根據(jù)錯誤提示:你是使用 root 賬號去訪問 localhost 的本地 mysql,但是你的 .env 和 database.php 文件中都是配置的一個具體 IP 地址。

所以肯定不是去讀取的這兩個文件,所以需要確定:

  1. 配置是否有緩存。
  2. 是否有其他配置覆蓋了你的配置。

我的理解,web代表了HTTP服務(wù)。假設(shè)現(xiàn)在還有RPC服務(wù),那只要在web的同級目錄下建立rpc的目錄即可,而datamodels這類代碼是可以給webrpc等不同服務(wù)所共享的。

select 用戶id,sum(gprice) from (
select 用戶id,項(xiàng)目,sum(A.price*B.比例) as gprice from A join b on a.項(xiàng)目 = b.項(xiàng)目 group by 用戶id,項(xiàng)目 ) group 用戶id

凝雅 回答

可以用swoole的table或者redis存你需要毫秒數(shù)n,然后用8640000的timer觸發(fā)后,n =n-8640000,如果n小于8640000,就可以新建一個n毫秒的timer,否則建一個8640000的timer,如此循環(huán)。

傻丟丟 回答

怎么說呢 現(xiàn)在比較常用的還是通過.env文件設(shè)置本地環(huán)境的相關(guān)配置吧

不將.env文件加入版本控制, 導(dǎo)出的時候就不存在.env文件就不用擔(dān)心替換的事情.

小曖昧 回答

關(guān)于訪問url的方式可以改下。ThinkPHP可以自定義命令行自定義命令行
把“循環(huán)數(shù)據(jù),狀態(tài)有變化的就推送微信消息給用戶”這個邏輯寫入命令行中,不需要通過訪問url的形式觸發(fā),也能避免安全問題,nginx的資源問題等。

1 * * * * * /usr/bin/php think test
小曖昧 回答

$array = [ 'xxx' => '*' ]
strtr($str, $arr);

說了這么多,重點(diǎn)沒有說出來,只說了個cache,首先要確定是css樣式?jīng)]更新,還是js代碼沒生效,還是php代碼沒更新,還是數(shù)據(jù)沒更新?

如果是css和js造成的頁面沒更新,嘗試一下ctrl+f5強(qiáng)制刷新,或者在引用資源的鏈接后面加個字符,比如xxxx.css?v=1

如果是php代碼沒更新,檢查一下opcache是否開啟,如果數(shù)據(jù)沒更新,要先看一下程序中是否使用某些緩存技術(shù),redis,memcached的之類的。

實(shí)在區(qū)分不出來就一步一步測試,寫個php的測試頁面,隨便改動一下。改動一下css單獨(dú)訪問。改動一下js,單獨(dú)訪問。

傲寒 回答

如果是linux,可能是權(quán)限問題,如果是window,可能是項(xiàng)目配置目錄寫錯,或者apache虛擬主機(jī)文件寫錯

背叛者 回答

可以拋出異常,會直接轉(zhuǎn)換成 json

if ($validator->fails()) {
        throw new ValidationException($validator, [
            'code' => 400, 'msg' => $validator->errors()->first(), 'data' => []
            ]
        );
}

location.search.split('/')[1]

任她鬧 回答

使用消息隊(duì)列的方式。登錄成功后,往隊(duì)列中丟一個登錄成功的消息。
活動上線期間,對隊(duì)列中的登錄消息進(jìn)行消費(fèi);
活動下線后,可以不消費(fèi)隊(duì)列中的登錄消息。

遲月 回答

最后用的是sqlsrv自帶的HASHBYTES('SHA1',$str) ,然后插入。

小眼睛 回答

需要保證所有的數(shù)據(jù)都同時操作成功,或者同時操作失敗。 是指如果a10操作失敗了,全部數(shù)據(jù)回滾到a1操作前嗎?如果是這樣的話,當(dāng)然是吧事務(wù)放在循環(huán)外層最合適。

如果只是 “a1插入后得到的主鍵ID更新到b1的一個字段” 是一個事務(wù),其中任意一組操作失敗不影響其他組操作的話,還是應(yīng)該將事務(wù)放在循環(huán)內(nèi)。

// 用于記錄失敗的操作的key
$error = [];

foreach($arr_a AS $key => $a){
    $transaction = Yii::$app->getDb()->beginTransaction();

    try {
        //插入 a1 得到 id1
        //將ID更新到 b1
        
        $transaction->commit();
    } catch (\Exception $e) {

        // 回滾
        $transaction->rollBack();
        // 記錄失敗的操作的key
        $error[] = $key;

        // 這里不拋異常
        continue;
    }
}

// 對記錄的 $error 進(jìn)行其他操作
忠妾 回答

可以用redis的發(fā)布與訂閱功能

妖妖 回答

如果你正在使用PHP的memcached擴(kuò)展,你可以將memcached.sess_locking設(shè)置為“off”,來避免session鎖。
文件的話參考手冊:

<?php
// 如果確定不修改會話中的數(shù)據(jù),
// 我們可以在會話文件讀取完畢之后立即關(guān)閉它
// 來避免由于給會話文件加鎖導(dǎo)致其他頁面阻塞
session_start([
    'read_and_close'  => true,
]);

memcached擴(kuò)展的鎖實(shí)現(xiàn):

clipboard.png

笨尐豬 回答

其實(shí)extension和你安裝的服務(wù)并沒有直接關(guān)系,我外部加載了memcached.so-php的extension,改了映射端口,配置一樣可以運(yùn)行.
我還是太年輕,才會問這個問題..