编辑:11.5秒,28条消息
单个请求可以正常工作。下面的代码需要11秒,使用API中的邮递员设置路线进行访问。
我做错什么了吗?我觉得即使没有缓存也不应该花11秒。
$xs = ChatMessage::where('chat_room_id','=',$roomId)
->with('user')
->orderBy('created_at','DESC')
->get();
foreach($xs as $r){
$translate = new TranslateClient([
'key' => 'xxxxxxxxxxxxxxxxxxxxxxx'
]);
$result = $translate->translate($r->message_english, [
'target' =>'es',
'source' => 'en',
]);
$r->message = $result['text'];
}
return $xs;
我认为只需将客户端移出for每个循环,就可以轻松地加快进程。每次迭代都要创建一个客户端。这不是最优的。您应该能够在每次翻译调用时重用客户端。这样可以加快你的翻译过程。您可以在github官方客户端项目中找到这种用法的示例
下面是一个伪代码示例:
client = new TranslateClient()
foreach(message in messages)
result = client.translate(message)
print(result)
另外,你的翻译文本有多长?您应该将要翻译的整个文本传递到单个调用中(只要支持的库允许(,这样您也可以减少对API的调用。
如果您仍然有问题,您可以按照评论中提到的方式并行使用多个请求。
一些有用的链接:
- PHP文档概述
- 翻译客户端