2009-12-15 121 views
5

我使用PHP來訪問Solr,我不知道一件事。Solr PHP客戶端vs file_get_contents?

爲什麼要使用Solr的PHP客戶端時,我可以使用:

$serializedResult = file_get_contents(
         'http://localhost:8983/solr/select?q=niklas&wt=phps'); 

得到的結果數組,然後打印出來?我真的沒有區別。 PHP客戶端有更豐富的功能嗎?

回答

4

我想是因爲以下幾個原因:

  • 靈活性
  • 錯誤處理
  • 安全問題
  • 擴展性

所有問題都是這些預先製作腳本的頭痛構架。所以如果有某種解決方案,我會建議你去做,而不是從你自己的事情做起。

此外,由於這些腳本和框架具有良好的社區支持,因此存在較少的錯誤,安全問題等等。

+0

但是當使用file_get_contents時會出現什麼問題?它發送,我尊重?它適用於每個瀏覽器等,只是沒有得到什麼安全/靈活性問題,這可能會給.. – ajsie 2009-12-15 13:56:28

+0

重申Sarfraz的評論,你可以做file_get_contents。但是你仍然需要進行解析,如果你使用客戶端庫,你會得到他指定的4件事情! – 2009-12-16 13:33:24

0

我想solr客戶端只是解析結果,併爲您提供傳遞參數的方便方法(爲您構建URL等)。

0

要使用,file_get_contents()...您的PHP必須啓用「allow_url_open」。如果你在某些主機上託管你的網站,那麼他們不允許使用這個功能,因爲他們保持關閉這個設置。

0

但是,在某些情況下,執行file_get_contents()可能有意義。 SolrClient沒有任何關於字段崩潰的東西(這是一個補丁在trunk中不可用),所以如果我不能使用PECL庫,我必須編寫自己的模擬SolrClient和SolrQuery的類。

1

solr-php-client庫實際上有一個適用於file_get_contents(@see Apache_Solr_HttpTransport_FileGetContents)的適配器,另外還有一個適用於Curl的適配器。 solr-php-client庫是一個精心製作的框架,它可以讓你做更多的事情,而不是發佈帶有參數的URL,以便完成搜索。 SPC提供可預測性,可擴展性和安全性。此外,solr-php-client寫入Zend Framework標準,所以它讚揚任何ZF項目。

如果我在選擇維護良好的社區支持項目和編寫自己的腳本之間做出選擇,那麼我會選擇維護良好的社區支持項目。如果你的需求超出了這個項目的範圍,你仍然可以編寫你自己的腳本,但是再次,這種類型的庫已經建立,所以你可以無痛地擴展它。