laravel5.3中ajax请求不知怎么莫名触发algolianet.com

请求的控制器是这样的:

    public function update(Request $request, $id)
    {
        $goods = Goods::findOrFail($id);
        
        $amount = $request->get('amount');
        
        switch ($amount) {
            case 10:
                $price = Price::findOrFail(1);
                break;
            case 20:
                $price = Price::findOrFail(2);
                break;
            case 30:
                $price = Price::findOrFail(3);
                break;
            default:
                $price = Price::findOrFail(4);
                break;
        }
        $goods->price = $price->price;
        return $price;
    }

return $price;会这样报错:


AlgoliaException in Client.php line 748:
Hosts unreachable: Connection timed out after 2000 milliseconds,Could not resolve host: L73SHQWTEB-1.algolianet.com,Could not resolve host: L73SHQWTEB-3.algolianet.com,Could not resolve host: L73SHQWTEB-2.algolianet.com

这是一个ajax的patch请求,dd()测试可以正常返回数据,下面测试return $goods;也可以正常返回数据:

    public function update(Request $request, $id)
    {
        $goods = Goods::findOrFail($id);
        return $goods;
     }

补充:
Goods模型中使用了algolia,$goods->price = $price->price;会触发到对goods表的查询,所以查询会到algolia的索引数据库中去查询。

class Goods extends Model
{
    use Searchable;//使用algoliasearch-laravel要加上这一句,把这一句注释掉测试,即可正常工作,可是这里需要保留
}

可是这里需要查询本地数据库,要怎么改一下?

阅读 3.2k
2 个回答

默认algolia/algoliasearch-client-php插件里边的连接超时时间为1秒,可以在AppServiceProvider里边单例一个,设置一下连接超时时间

    public function boot()
    {
        // …… 省略之前代码
        // 单例初始化AlgoliaSearch\Client类
        $this->app->singleton(\AlgoliaSearch\Client::class, function () {
            $client = new \AlgoliaSearch\Client(
                config('scout.algolia.id'), config('scout.algolia.secret')
            );
            // 设置连接超时时间
            $client = setConnectTimeout(30);
            return $client;
        });
    }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进