给定一个调用存储过程的事件,确保一次只运行一个过程实例的最佳实践是什么?特别是在过程有时可能需要比事件结束所需的时间更长的情况下。
让我们采取以下制造的示例中,事件的是花费1秒至超过打勾和过程即需要5秒至执行:
DELIMITER ;;
CREATE PROCEDURE `P_wait`()
BEGIN
SELECT SLEEP(5);
END;;
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
DROP EVENT IF EXISTS `E_wait`;
DELIMITER ;;
CREATE EVENT `E_wait`
ON SCHEDULE
EVERY 1 SECOND
DO
BEGIN
CALL `P_wait`(); //proc_call
END;;
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)
正如你所期望的,当事件正在运行,你会看到的5个实例SLEEP()中PROCESSLIST:
mysql> SHOW PROCESSLIST;
+-------+------+-----------+-------+---------+------+-------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-------+------+-----------+-------+---------+------+-------------+------------------+
| 27045 | root | …Run Code Online (Sandbox Code Playgroud) 我可能错过了一些非常简单的东西,但是当在Lua中调用一个对象的方法时,有没有办法从self变量中获取该对象的名称?
为了说明我的意思,这是一个有点人为的例子 - 一个简单的Stack实现:
Stack = {}
function Stack:new (...)
instance = {}
instance.elements = {...}
setmetatable(instance, self)
self.__index = self
return instance
end
function Stack:push (...)
for i,v in pairs({...}) do
table.insert(self.elements,v)
end
end
function Stack:pop ()
if #self.elements > 0 then
return table.remove(self.elements)
else
error("Cannot pop, Stack is empty")
end
end
my_stack = Stack:new(2,4)
my_stack:push("dog") -- my_stack.elements = {2,4,"dog"}
print(my_stack:pop()) -- "dog"
print(my_stack:pop()) -- "4"
print(my_stack:pop()) -- "2"
print(my_stack:pop()) -- error: "Cannot pop, Stack is empty" …Run Code Online (Sandbox Code Playgroud) 我正在尝试将搜索字段添加到响应侧边栏,并希望字段响应地缩放到侧边栏的宽度,同时将"提交"按钮保持在设置宽度,与搜索字段在同一行.
我已经能够使用div来模拟效果,但是当将相同的样式应用于表单元素时,搜索字段将始终填充表单元素的整个宽度:
http://dabblet.com/gist/5618200
我知道我可以使用百分比来实现这一点:
http://dabblet.com/gist/5618209
但我真的希望'提交'按钮有一个设定的宽度.
我可以做些什么来使表单在我的第一个例子中表现得非常像div模型?
我想发送数据以在视图中实时更新,例如显示操作状态的进度条.在laravel 4中最好的方法是什么?
我正在开发一个基于Laravel 4的项目,每个用户都可以兑换一个串行密钥.
我已经创建了一个管理员后端,我可以轻松地粘贴到一个键列表中,或者上传它们的文件.
假设$key_string是我上传的换行符的字符串,并且想要解析然后上传所包含的键字符串 - 这里是添加键的简化代码:
$key_string = rtrim($key_string);
$key_string = str_replace("\n\r", "\n", $key_string);
$keys = explode( "\n", $key_string);
foreach($keys as $index => $key) {
Key::create(
array( "serial" => trim($key) )
);
}
Run Code Online (Sandbox Code Playgroud)
由于我上传的数字组成千上万,这有时需要30秒,在此期间管理面板自然不会显示任何内容.
现在,我不介意花这个时间.我不需要优化上传以使用一个查询等,但我想有一些实际的反馈,所以我知道上传已经走了多远.
当我上传密钥时,我希望能够每隔几秒或百分比滴答在我的视图中更新进度条或计数器(使用当前$index)
有没有一种简单的方法可以轻松地处理这种情况,最好是集成在Laravel 4中?我假设这会涉及ajax,但是有人能指出我正确的方向吗?