请求接口不同出现返回信息一致和上传图片接口获取不到的情况
来源:8-7 赛事直播员图片发布 - 上传图片(一)
![](http://img1.sycdn.imooc.com/user/570c51ff00015f2301000100-100-100.jpg)
我心依然_Song
2020-03-01
麻烦老师看下这两个是什么原因造成的,自己暂时还没看出来。。
1.下面两个分别是获取验证码和登录的接口,校验返回信息是不一样的,但是会出现获取不到或者两个一样的情况。
代码:
2.上传图片
代码:
控制器
class Image {
public function index() {
var_dump($_FILES);
// $file = request()->file('file');
// var_dump($file);
// $info = $file->move('../public/static/upload');
// var_dump($info);
}
}
ws.php
<?php
class Ws {
const HOST = '0.0.0.0';
const PORT = '8811';
public $ws = null;
public function __construct() {
$this->ws = new swoole_websocket_server(self::HOST, self::PORT);
$this->ws->set([
"enable_static_handler" => true,
"document_root" => "/www/wwwroot/swoole_pjt/public/static",
"worker_num" => 4,
'task_worker_num' => 4
]);
$this->ws->on('open', [$this, 'onOpen']);
$this->ws->on('message', [$this, 'onMessage']);
$this->ws->on('workerStart', [$this, 'onWorkerStart']);
$this->ws->on('request', [$this, 'onRequest']);
$this->ws->on('task', [$this, 'onTask']);
$this->ws->on('finish', [$this, 'onFinish']);
$this->ws->on('close', [$this, 'onClose']);
$this->ws->start();
}
public function onOpen($ws, $request) {
print_r($request->fd);
}
public function onMessage($ws, $frame) {
echo "ser-push-message:".$frame->data.PHP_EOL;
$ws->push($frame->fd, 'server-push:'.date('Y-m-d H:i:s'));
}
public function onWorkerStart($server, $worker_id) {
define('APP_PATH', __DIR__ . '/../application/');
define('MELON_ROOT', __DIR__ . '/../');
// 定义插件目录
define('PLUGIN_PATH', MELON_ROOT . 'plugin/');
define('UPLOADS', __DIR__ . '/uploads');
// 定义核心包目录
define('MELON_LTR', MELON_ROOT . 'watermelon/melon/');
// 定义配置文件目录
define('CONF_PATH', MELON_ROOT . 'config/');
// 定义应用的运行目录
define('RUNTIME_PATH', MELON_ROOT . 'runtime/');
// 加载ThikPHP引导文件
require __DIR__ . '/../watermelon/thinkphp/base.php';
}
public function onRequest($request, $response) {
$_SERVER = [];
if (isset($request->server)) {
foreach ($request->server as $k => $v) {
$_SERVER[strtoupper($k)] = $v;
}
}
if (isset($request->header)) {
foreach ($request->header as $k => $v) {
$_SERVER[strtoupper($k)] = $v;
}
}
$_GET = [];
if (isset($request->get)) {
foreach ($request->get as $k => $v) {
$_GET[$k] = $v;
}
}
$_POST = [];
if (isset($request->post)) {
foreach ($request->post as $k => $v) {
$_POST[$k] = $v;
}
}
$_FILES = [];
if (isset($request->files)) {
foreach ($request->files as $k => $v) {
$_FILES[$k] = $v;
}
}
print_r($_FILES);
$_POST['http_server'] = $this->ws;
$result = ob_start();
// var_dump('开启缓冲:'.$result).PHP_EOL;
try {
think\Container::get('app', [APP_PATH])->run()->send();
} catch (Exception $e) {
}
$result = ob_get_contents();
// var_dump('获取缓冲内容:'.$result).PHP_EOL;
if(!empty($result)){
//清空缓存区
ob_end_clean();
}
// 结束请求
$response->end($result);
// unset($result);
}
public function onTask($server, $taskId, $workerId, $data) {
//分发task任务
$task = new \app\common\task\Task();
$method = $data['method'];
$flag = $task->$method($data['data']);
return $flag;
}
public function onFinish($server, $taskId ,$data) {
echo "taskId:".$taskId.PHP_EOL;
echo "finish task data-success:".$data.PHP_EOL;
}
public function onClose($ws, $fd) {
echo "clientId:".$fd.PHP_EOL;
}
}
new Ws();
写回答
1回答
-
hwkkevin
2020-03-02
是否重启ws.php文件
2.可以进行断点排查ws.php 内onWorkerStart的方法,只需加载
define('APP_PATH', __DIR__ . '/../application/');
require __DIR__ . '/../thinkphp/start.php';
012020-03-02
相似问题