2012-01-29 72 views
0

PHP腳本是否可以將一段代碼插入數據庫,然後某種守護程序會看到它被放入,然後運行代碼?有點像一個cron工作,或者一個工作隊列。從數據庫運行腳本

+4

將代碼放入數據庫通常是一個壞主意。最好將代碼放在守護進程端,並簡單地通過你想讓代碼操作的參數。 – Amber 2012-01-29 21:24:41

+1

這樣想:如果有人闖入你的數據庫並運行任意代碼會怎麼樣? – Joseph 2012-01-29 21:30:10

+0

好的,但如果我需要排隊呢? – user1174824 2012-01-29 21:30:46

回答

2

技術上你可以做到。該代碼應存儲在文本列,那麼你可以用eval評價它:http://es.php.net/manual/en/function.eval.php

這不是幾個原因一個非常好的主意:存儲在數據庫中的代碼是不是版本控制之下,和安全的影響是非常嚴重。大多數作業隊列系統存儲「作業類型」和「作業參數」而不是可執行代碼。作業類型可以是要包含的文件的名稱,也可以是要在OOP設置中實例化的類的名稱。然後你會調用在那裏定義的特定函數,傳入參數。

如果您使用serialize函數首先將其轉換爲字符串,則作業參數可以是任何PHP數據結構。 http://es.php.net/manual/en/function.serialize.php