如何解决cURL 错误:操作在 15001 毫秒后超时,收到 0 个字节的 woocomerce API
面临 cURL 错误:操作在 15001 毫秒后超时,0 字节收到了 Woocomerce API 创建产品的问题。
我正在使用 Laravel 包,即 https://github.com/Codexshaper/laravel-woocommerce 它运行良好并创建产品,但突然停止工作并开始抛出 PHP 错误。
以下是我用来从 laravel Controller 创建一本关于 Woocomerce 的书的方法:
public function addProductToWC(Request $request)
{
set_time_limit(0);
$response = '';
if ($request->isMethod('post')){
if(!empty($request->get('book_id'))){
$book = Book::find($request->get('book_id'));
$coverImgPath = base_path('public/customize_book/'.Session::get('cover_image'));
if (file_exists($coverImgPath)) {
$imageurl = url('/public/customize_book/'.Session::get('cover_image'));
} else {
$imageurl = url('/images/'.$book->bookimage);
}
if(!empty($book->id)){
$data = [
'name' => $book->title,'type' => 'simple','regular_price' => number_format($request->get('book_price')),'description' => (!empty($book->description) ? $book->description :''),'short_description' => 'Simple product short description.','categories' => [
[
'id' => 1
]
],'images' => [
[
'src' => 'http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_front.jpg'
],[
'src' => 'http://demo.woothemes.com/woocommerce/wp-content/uploads/sites/56/2013/06/T_2_back.jpg'
]
]
];
$product = Product::create($data);
if($product['id']){
$response = array('error' => false,'code' => '200','data' => array('product_id' => $product['id'],'message' => 'Product created successfully.'));
}else{
$response = array('error' => true,'code' => '401','message' => 'Product syncing failed please try again later.'));
}
}else{
$response = array('error' => true,'message' => 'Invalid book detail please try again.');
}
}else{
$response = array('error' => true,'message' => 'Invalid book detail please try again.');
}
}else{
$response = array('error' => true,'message' => 'Invalid method please try again.');
}
// return response
return response()->json($response);
}
解决方法
查看位于 https://github.com/Codexshaper/laravel-woocommerce/blob/master/composer.json 的 composer.json,我可以看到他们正在使用 woocommerce 客户端 "automattic/woocommerce": "^3.0"
这默认为 15 秒的 request 超时,这就是为什么set_time_limit(0);
没有解决问题。
直接使用时,您可以在选项中设置超时
$woocommerce = new Client(
env('MGF_WOOCOMMERCE_API_URL'),// Your store URL
env('MGF_WOOCOMMERCE_API_KEY'),// Your consumer key
env('MGF_WOOCOMMERCE_API_SECRET'),// Your consumer secret
[
'timeout' => 120,// SET TIMOUT HERE
'wp_api' => true,// Enable the WP REST API integration
'version' => 'wc/v3' // WooCommerce WP REST API version
]
);
查看库源 https://github.com/Codexshaper/laravel-woocommerce/blob/master/src/WooCommerceApi.php
$this->client = new Client(
config('woocommerce.store_url'),config('woocommerce.consumer_key'),config('woocommerce.consumer_secret'),[
'version' => 'wc/'.config('woocommerce.api_version'),'wp_api' => config('woocommerce.wp_api_integration'),'verify_ssl' => config('woocommerce.verify_ssl'),'query_string_auth' => config('woocommerce.query_string_auth'),'timeout' => config('woocommerce.timeout'),]
);
看起来超时来自 Laravel 配置文件中的 woocommerce.timeout
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。