thinkphp5队列的报错 [think\exception\ThrowableError] Type error: count(): Argument #1 ($value) must be

一.thinkphp5队列执行 php think queue:work --queue UploadJob 的报错 [think\exception\ThrowableError] Type error: count(): Argument #1 ($value) must be of type Countable|array, null given, 修改代码 thinkphp\library\think\process\pipes\Windows.php, line 199~221之间的数据


namespace think\process\pipes;

use think\Process;

class Windows extends Pipes

.....


	if (null !== $w && is_array($r) && 0 < count($r)) {
            $data = '';
            while ($dataread = fread($r['input'], self::CHUNK_SIZE)) {
                $data .= $dataread;
            }

            $this->inputBuffer .= $data;

            if (false === $data || (true === $close && feof($r['input']) && '' === $data)) {
                $this->input = null;
            }
        }

         if (null !== $w && is_array($r) && 0 < count($w)) {
            while (strlen($this->inputBuffer)) {
                $written = fwrite($w[0], $this->inputBuffer, 2 << 18);
                if ($written > 0) {
                    $this->inputBuffer = (string) substr($this->inputBuffer, $written);
                } else {
                    break;
                }
            }
        }
private function write($blocking, $close)
    {
        if (empty($this->pipes)) {
            return;
        }

        $this->unblock();

        // $r = null !== $this->input ? ['input' => $this->input] : null;
        $r = null !== $this->input ? ['input' => $this->input] :  [];
        $w = isset($this->pipes[0]) ? [$this->pipes[0]] : null;
        $e = null;
 // if (null !== $w &&  0 < count($r)) {
        if (null !== $w && 0< is_array($r)? count($r):0 ) {
            $data = '';
            while ($dataread = fread($r['input'], self::CHUNK_SIZE)) {
                $data .= $dataread;
            }

            $this->inputBuffer .= $data;

            if (false === $data || (true === $close && feof($r['input']) && '' === $data)) {
                $this->input = null;
            }
        }

 // if (null !== $w  && 0 < count($w)) {
        if (null !== $w  && 0< is_array($r)? count($r):0) {
            while (strlen($this->inputBuffer)) {
                $written = fwrite($w[0], $this->inputBuffer, 2 << 18);
                if ($written > 0) {
                    $this->inputBuffer = (string) substr($this->inputBuffer, $written);
                } else {
                    break;
                }
            }
        }

你可能感兴趣的:(php)