我試圖觸發Laravel控制檯命令PHP的每一個插入的行推到我的客戶端UI,但過程似乎並沒有安裝lib_mysqludf_sys庫sys_exec(工作後)/ sys_eval( )支持。MySQL的程序與sys_exec()
環境是Laravel Homestead Vagrant VM。這是運行Ubuntu 14.04.3和MySQL 5.6.19-0ubuntu0.14.04.1。我還編譯併成功安裝了lib_mysqludf_sys庫。
- 當使用sys_exec()時,運行該過程時得到返回的退出代碼32512。
- 使用sys_eval()時,運行該過程時,在debug_msg輸出中沒有輸出。
- 使用debug_msg迴盪CMD,其手動運行沒有問題的CLI。
- 沒有mysql的error.log輸出
有誰知道如何進一步解決這個問題?
DELIMITER $$
DROP PROCEDURE IF EXISTS homestead.debug_msg$$
DROP PROCEDURE IF EXISTS homestead.sessionActivity$$
CREATE PROCEDURE homestead.debug_msg(enabled INTEGER, msg VARCHAR(255))
BEGIN
IF enabled THEN BEGIN
select concat("** ", msg) AS '** DEBUG:';
END; END IF;
END $$
CREATE PROCEDURE homestead.sessionActivity(id BIGINT)
BEGIN
IF id THEN BEGIN
DECLARE cmd CHAR(255);
DECLARE result CHAR(255);
SET cmd = CONCAT('/usr/bin/php /home/vagrant/Code/Laravel/artisan session:push ', id);
SET result = sys_eval(cmd);
#####SET result = sys_exec(cmd);
call debug_msg(TRUE,cmd);
#####call debug_msg(TRUE,result);
END; END IF;
END$$
DELIMITER ;
在這裏與debug_msg運行顯示CMD變量:
mysql> CALL homestead.sessionActivity(74499);
+--------------------------------------------------------------+
| ** DEBUG: |
+--------------------------------------------------------------+
| ** php /home/vagrant/Code/Laravel/artisan session:push 74499 |
+--------------------------------------------------------------+
1 row in set (0.00 sec)
哪個手動精細運行:
[email protected]:~# php /home/vagrant/Code/Laravel/artisan session:push 74499
string(259) "new line: some shit eol"
[email protected]:~#
在這裏與debug_message運行顯示結果變量,使用sys_exec() ,但再次重申,PHP命令不跑了,並沒有其他的輸出或記錄顯示(這裏sys_eval()而不是sys_exec()輸出將是空的)錯誤:
mysql> CALL homestead.sessionActivity(74499);
+-----------+
| ** DEBUG: |
+-----------+
| ** 32512 |
+-----------+
1 row in set (0.01 sec)
奇怪的是,雖然lib_mysqludf_sys安裝創建函數,但它們不顯示在show function狀態中。我不確定它是否相關。
mysql> CREATE FUNCTION lib_mysqludf_sys_info RETURNS string SONAME 'lib_mysqludf_sys.so';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE FUNCTION sys_get RETURNS string SONAME 'lib_mysqludf_sys.so';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE FUNCTION sys_set RETURNS int SONAME 'lib_mysqludf_sys.so';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE FUNCTION sys_exec RETURNS int SONAME 'lib_mysqludf_sys.so';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE FUNCTION sys_eval RETURNS string SONAME 'lib_mysqludf_sys.so';
Query OK, 0 rows affected (0.00 sec)
mysql> show function status;
Empty set (0.01 sec)
mysql>