我目前使用laravel-elasticsearch供应商进行我的ES查询。我在我的laravel队列(使用beanstalkd)处理的作业中使用了这个。我遇到的问题是,在长时间运行的作业中,最终我不能再将数据插入到elasticsearch中。这项工作只是挂起了(没有例外),我将它缩小到我正在进行ES调用的代码。有可能我的连接可能会变得过时而无法重新连接?我的另一个想法是,它与使用Facade和它是一个单身人士有关。ElasticSearch查询在laravel作业队列中挂起
这是我在做什么,这不是我确切的代码。但是当代码在长时间运行的作业中运行时,代码工作得很好。我只是想提供一些context.it插入很好,直到它在长时间运行的进程之后运行才能正常运行。
UPDATE:
我已经缩小问题下到elasticsearch-PHP库持续的连接。我有一个负载均衡器后面的ES,它在5分钟后超时TCP连接。问题是在ES php库中不存在活着。 5分钟后连接关闭,但它不会关闭我的连接。有没有办法为elasticsearch-php设置保持活动状态?或打电话重置连接?
//run some functions....
$params = array();
$params['body'] = array('somefield' => 'some data');
$params['index'] = 'my_index';
$params['type'] = 'my_type';
$params['id'] = 'my_id';
$ret = Es::update($params);//this is working just fine
//long running function here
$newparams = array();
$newparams['body'] = array('somefield' => 'some data');
$newparams['index'] = 'my_index';
$newparams['type'] = 'my_type';
$newparams['id'] = 'my_id';
$return = Es::update($newparams);//this will just hang
看起来像失业的问题,而不是ES。你是否在处理失败的工作? –
我正在处理失败的作业,但作业没有失败,它只是挂起,就好像它试图连接到ES而没有超时 – arrowill12