我的控制器中有http请求:

    $url = url('/api/list-professional');

    $professionals = Http::get($url);

当我在phpUnit Tests中使用这两行代码时, 但是当我在控制器中使用它们时,它只会超时.

有人知道为什么吗?

推荐答案

这样做的原因是php artisan serve是单线程应用程序.因此,当我们使用一个HTTP客户端向它自己发出请求时,它基本上只是try 先完成GUZLE HTTP客户端(作为客户端),然后再来完成该请求(作为服务器),这是不可能的.

因此,使用php artisan Serve创建两个端口.一个端口用于HTTP客户端,另一个端口用于从浏览器访问

例如,如果您创建了端口8000和8001,则

$professionals = Http::get("http://127.0.0.1:8001/api/list-professional");

并使用8000端口从浏览器访问

Php相关问答推荐

在WooCommerce产品档案页面中显示产品销售百分比

PHP DateInterval天数不一致

获取要删除的图像的公共ID

为什么正则表达式与得到的文本块之前得到的也行?

允许在WooCommerce管理员优惠券列表中显示自定义优惠券类型

使用PHP curl的Amazon SP API批处理调用

在WooCommerce中的本地收件发货方式下添加一个 Select 字段

不包括WooCommerce中单独销售的产品

PHP根据特定索引值从中删除子数组

如何在UML类图中可视化变量引用数组

从两个日期创建日期范围,然后为范围中的每个日期复制子数组

表单提交返回空白页

更改特定产品标签的 Woocommerce 产品名称

在 WordPress 中将自定义帖子类型永久链接设置为 root

提交仅包含活动详细信息选项卡表单的主表单

如何通过工厂为点列制作一个假坐标?

PHP 中是否有 is_closure() 函数?

PHP 将数组值插入到 csv 列

在 GA4 Data API V1 Beta 中使用 inListFilter 过滤器时出错

在 WooCommerce 结帐后更新用户元字段