Windows搜索w / PHP

时间:2017-07-11 14:34:54

标签: php ado windows-server-2008-r2 windows-search

我有一个基本的PHP脚本,可以使用最近停止运行的Windows搜索查询索引。

脚本返回索引的结果 - 因此仍然可以工作 - 但是当脚本显然无法识别时会发生致命错误,应该停止循环遍历记录集。这是一个PHP日志摘录,在其中您可以看到找到并返回结果然后脚本死掉:

  

[2017年7月11日09:55:13 America / New_York]   Copyofguidance.58de8e890c10e.xlsx

     

[2017年7月11日09:55:13 America / New_York]   SRFWebsiteSchedule.5876a0ab683a8.xlsx

     

[2017年7月11日09:55:13 America / New_York]   CSI_D01_S04_T03_STEP.5877ad8385974.pdf

     

[2017年7月11日09:55:13 America / New_York]   Copyofguidance.58cbf217868d9.xlsx

     

[2017年7月11日09:55:13 America / New_York]   Copyofguidance.58cbf39ca3955.xlsx

     

[2017年7月11日09:55:13 America / New_York]   Copyofguidance.58cbf565194fc.xlsx

     

[11-Jul-2017 09:55:13 America / New_York] PHP致命错误:未捕获   带有消息'来源:的异常'com_exception'   未知
描述:未指定错误'in   C:\ WEB \ srf \ scripts \ windowsSearch.php:149堆栈跟踪:

     

0 C:\ WEB \ srf \ scripts \ windowsSearch.php(149):com-> moveNext()

     在第149行的C:\ WEB \ srf \ scripts \ windowsSearch.php中抛出

1 {main}

以下是相关的代码行:

$conn = new COM('ADODB.Connection');
$rs = new COM('ADODB.Recordset');

$provider = "Provider=Search.CollatorDSO;Extended "
        . "Properties='Application=Windows';";
$conn->open($provider);
$str = "SELECT System.ItemName, System.DateModified FROM SYSTEMINDEX "
        . "WHERE DIRECTORY='" 
        . $nPath . "' AND CONTAINS('\"" 
        . $kw . "\"')";     
    $rs->cursorLocation = 3;
    $rs->lockType = 1;
    $rs->cursorType = 3;
    $rs->activeConnection = $conn;
    $rs->open($str);
if (!($rs->bof && $rs->eof)) {  
    $rs->moveFirst();
    while (!$rs->eof) { 
        error_log($rs->Fields['System.ItemName']->value);
        $rs->moveNext();
    }
}

我注意到recordCount方法也会抛出致命错误。我不确定导致此问题的原因是什么,或者是否有其他方法可以用作解决方法。

使用ADO的其他代码继续运行没有问题,虽然该代码连接到SQL Server,而不是Windows搜索。

Windows 2008 R2服务器接收常规补丁,PHP最近更新为5.6.30。降级并不是一个真正的选择,即使结果证明是这个问题......

如果我遗漏了任何有用的信息,请告诉我。谢谢。

0 个答案:

没有答案