我正在开发一个基于PHP,Mysql,Apache的项目.
我有一个名为notification的模块,就像FACEBOOK中的Notification一样,为此我有3种方法
或者我将每个更新插入一个表,在需要通知这些更新的用户数中,即如果假设类别B有一些更新,并且此类别B包含100个用户,那么我将为相应的用户插入100行一个说法,通知表.
第二种方式
我可以做的只是在表中插入一个特定的类别条目,然后在每个这些Caregory ID上提交一个重的JOIN查询来获取多个表中的所有记录以获取记录.
第三种方式
我在每次更新时使用触发器,以便它可以用于通知用户.
我相信这三种方式在某些方面都存在问题.
现在任何人都可以建议任何更好的想法或哪一个是更好的选择?
我担心网站的性能,因为它将有批量条目
谢谢
我希望有人可以解释以下行为.
假设我正在尝试实现一个确定任何数组长度的函数,但希望避免使用宏.例如
#define array_length(x) ( sizeof(x) / sizeof(x[0]) )
Run Code Online (Sandbox Code Playgroud)
鉴于该函数必须适用于任何参数类型,我必须使用模板.
我的第一次尝试看起来像这样.
template <typename T>
inline size_t
array_length(const T argument) {
return sizeof(argument) / sizeof(argument[0]);
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为参数被视为指针.一旦T变为T,一切都工作得很好.
我想知道是否有人可以说一下语言实现水平发生了什么.例如,当引用用作函数参数时,将哪些额外信息传递给函数?
我需要Timeout::Error从Redis库中拯救一个凸起但是我遇到了一个问题,抢救那个特定的类似乎不起作用.
begin
Redis.new( { :host => "127.0.0.X" } )
rescue Timeout::Error => ex
end
=> Timeout::Error: Timeout::Error from /Users/me/.rvm/gems/ree-1.8.7-2011.03@gowalla/gems/redis-2.2.0/lib/redis/connection/hiredis.rb:23:in `connect'
Run Code Online (Sandbox Code Playgroud)
当我试图拯救Exception它仍然无法正常工作
begin
Redis.new( { :host => "127.0.0.X" } )
rescue Exception => ex
end
=> Timeout::Error: Timeout::Error from /Users/me/.rvm/gems/ree-1.8.7-2011.03@gowalla/gems/redis-2.2.0/lib/redis/connection/hiredis.rb:23:in `connect'
Run Code Online (Sandbox Code Playgroud)
如果我尝试手动提升异常,我可以拯救它,但不知道为什么我从Redis Gem(2.2.0)中调用它时无法解救它.
begin
raise Timeout::Error
rescue Timeout::Error => ex
puts ex
end
Timeout::Error
=> nil
Run Code Online (Sandbox Code Playgroud)
有任何线索如何解救这个例外?