文章推荐
重定向跳转引起的 PHP $_Post 和 php://input 数据为空
今天在 ThinkPHP 下测试获取 HTTP 请求 POST 数据时,发现无论怎么测试,都获取不到 POST 的数据。 $_POST 为空 php://input 也为空 但是在另外一台服务器上测试,却是正常可以获取到的。 查了半天没有找到问题,好不容易找到一个 Google 的结果,发现确实由于链接跳转引起的问题。 例如: 我测试时,是向 http://www.sunzhongwei.com/api 发送 POST 请求,而实际上 http 的请求会我设置的 nginx 自动重定向到 https 的链接 https://www.sunzhongwei.com/api。这种情况下,php://input 始终获取不到数据。 修改成重定向后的链接,就一切正常了。。。
阅读全文>>作者:林伟华个人博客:[程序人生]
PHP 将数组的值赋值给一组变量
经常需要将一个字符串分割成一组值,然后赋值给不同的变量。 逐行赋值非常繁琐,于是查了一下 PHP 中是否有类似 python 中 a, b = (a, b) 的操作。 果然有 $info = array('coffee', 'brown', 'caffeine'); list($drink, $color, $power) = $info; echo "$drink is $color and $power makes it special.\n"; list 这个关键字,是专门为这个操作而生的。 可以忽略一个值。 list($drink, , $power) = $info;
阅读全文>>作者:林伟华个人博客:[程序人生]
GuzzleHttp 请求设置超时时间
之前调用一个三方的 WEB API,大量的请求超时,导致 PHP 进程被占用完。整个网站一直报 504。 其中一个优化措施就是对三方 API 调用设置超时时间。 use GuzzleHttp\Client; $client = new Client(); $url = 'https://www.sunzhongwei.com'; try { $res = $client->request('GET', $url, ['timeout' => 1.5]); $res = $res->getBody(); } catch(\Throwable $e) { Log::info('Fail to call api‘); } timeout 默认值是 0, 即一直等待,这非常危险。所以这里改成了 1.5 秒。
阅读全文>>作者:林伟华个人博客:[程序人生]
PHP Composer 将指定依赖包版本降级
例如,我之前安装的是 laravel-permission (2.6.0) 但是我想降级到 1.4.0 版本 直接修改 composer.json 文件,并没有效果。 执行命令即可 composer require "spatie/laravel-permission:1.4" - Removing spatie/laravel-permission (2.6.0) - Installing spatie/laravel-permission (1.4.0) Downloading: 100%
阅读全文>>作者:林伟华个人博客:[程序人生]