3 回答

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
由于我們使用的是Windows,所以我們必須使用以下方法編譯用于Windows的UDF庫(kù) 并將它們安裝在MySQL服務(wù)器上。 我們創(chuàng)建了一個(gè)調(diào)用sys_val的存儲(chǔ)過程。 我們創(chuàng)建了一個(gè)調(diào)用存儲(chǔ)過程的觸發(fā)器。
DELIMITER $$ CREATE PROCEDURE udfwrapper_sp(p1 DOUBLE, p2 DOUBLE, p3 BIGINT)BEGIN DECLARE cmd CHAR(255); DECLARE result CHAR(255); SET cmd = CONCAT('C:/xampp/php/php.exe -f "C:/xampp/htdocs/phpFile.php" ', p1, ' ', p2, ' ', p3); SET result = sys_eval(cmd);END$$;
CREATE TRIGGER udfwrapper_trigger AFTER INSERT ON sometable FOR EACH ROW CALL udfwrapper_sp(NEW.Column1, NEW.Column2, NEW.Column3);

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊
@Johan說,在應(yīng)用程序中添加了一定程度的安全問題(外部PHP腳本調(diào)用、權(quán)限設(shè)置,可能還有SELinux安裝等等)。 給應(yīng)用程序增加了額外的復(fù)雜性(要了解數(shù)據(jù)庫(kù)如何工作,現(xiàn)在需要了解SQL和PHP,而不僅僅是SQL),您還必須調(diào)試PHP,而不僅僅是SQL。 向應(yīng)用程序添加額外的故障點(diǎn)(例如,PHP錯(cuò)誤配置),這也需要進(jìn)行診斷(我認(rèn)為觸發(fā)器需要保存一些調(diào)試代碼,這些代碼將記錄所有不成功的PHP解釋器調(diào)用及其原因)。 增加性能分析的附加點(diǎn)。每個(gè)PHP調(diào)用都是昂貴的,因?yàn)槟枰獑?dòng)解釋器,將腳本編譯為字節(jié)碼,執(zhí)行它等等。因此,涉及此觸發(fā)器的每個(gè)查詢都會(huì)執(zhí)行得更慢。有時(shí)很難隔離查詢性能問題,因?yàn)镋XPLAIN沒有告訴您查詢由于觸發(fā)例程性能而變慢的任何信息。我也不知道如何將觸發(fā)時(shí)間轉(zhuǎn)儲(chǔ)到慢速查詢?nèi)罩局小?/trans> 為應(yīng)用程序測(cè)試增加了一些問題。SQL可以很容易地測(cè)試。但是要測(cè)試SQL+PHP觸發(fā)器,您必須應(yīng)用一些技巧。
添加回答
舉報(bào)