2015-10-04 49 views
2

使用案例:應用SQL查詢到內存的PHP對象或數組

我建立一個網站,用戶可以搜索記錄 - 用SQL。但是 - 他們也應該能夠保存搜索結果,並在新提交的記錄符合標準時收到通知。

這不是購車網站,例如:用戶在90291郵政編碼內搜索1967年的福特野馬,並使用289 V8發動機。找不到合適的車,但是他們希望在2周後提交匹配的車時通知他們。

所以當然,每次將新車添加到數據庫時,我都可以檢索所有用戶搜索查詢,並將所有用戶搜索查詢全部運行到數據庫中的所有車上。但這不是可擴展的。

每次提交新車時,我都會用每個「搜索」查詢搜索整個「汽車」表,我只想在現有的用戶查詢中檢查內存中的單個「汽車」對象/數組。

我正在用Laravel和Eloquent在PHP中這樣做,但我的實現不可知且歡迎任何理論方法。

感謝,

克里斯

回答

0

我寧願在預定的時間間隔運行分批保存的搜索,而不是運行它們艾利時間記錄追加到表。

0

一種可能的方法是使用SQL中的觸發器發送通知。這是與它有關的東西:1s link2nd link

0

這涉及到如何構建你的內存緩存。

無論它是什麼緩存,它通常都依賴於鍵值對。它將是相同的緩存你使用: http://laravel.com/docs/4.2/cache

所以最後它是所有關於使用正確的密鑰。如果您想基於汽車更新緩存的對象,那麼您需要以某種方式製作密鑰,以便您可以使用汽車作爲(部分)密鑰從緩存中檢索所有對象。通常情況下,你需要爲userId + carId + xyz這樣的密鑰連接多個事物,然後對其進行MD5校驗。

所以這將是你的問題的答案。但通常我不會推薦這種方法。這聽起來像你的搜索結果更像是持續的長期可用結果。所以你可能想將它們存儲在更加永久的地方,如簡單的表格。然後你可以使用標準的SQL工具來加入表格並找出需要的東西。

0

我的方法是使用MySQL存儲過程並使用https://dev.mysql.com/doc/refman/5.1/en/event-scheduler.html來查看可能的更改的配置,然後標記它們存儲某種髒指示符,然後通過php腳本檢查該腳本,該腳本將根據需要或從定期等cron等。 您可以使用觸發器簡單地標記事件調度程序有工作要做。然而,你的方法有許多狀態變量開始變得難看,但是這個用例似乎並沒有像我看到的那樣整齊地映射到隊列結構中。