PHP在后台/服务器中运行

时间:2015-03-02 02:35:11

标签: php android api laravel-4 httprequest

我想在服务器中运行PHP,例如我想检查客户的生日......

$someones_birthday_today = mysql_query("SELECT * FROM users WHERE birthdate=".date('Y-m-d')." ");

if($someones_birthday_today){
    mysql_query("INSERT INTO birthdays (`user_id`, `birthdate`) VALUE ('$user_id', '$birthdate') ");
}

查询“选择”和“插入”不会减慢进程的速度。但这是一个来自移动应用程序的Http请求。每当用户访问我的应用程序日志视图时,我都不想要求。

每分钟/每天/每月,它将检查今天的生日并插入数据库,这是用于通知。 当用户登录到他的个人资料时,php将查询生日表,如果有的话。

理由:所以我希望每次用户登录他的个人资料时都要查询select和insert。通过这种方式,页面加载速度更快

研究:我做了一些关于cron工作的研究。它说它应该在web主机中访问shell。但还有其他方法吗?

我正在使用Mac Mavericks 10.9 我正在使用Laravel

1 个答案:

答案 0 :(得分:0)

Cron Jobs不适合这个。

  • 如果您想在仅在用户个人资料中查看的目的这样做,那么您只需在用户查看其个人资料时发送此查询即可。您发布的查询运行起来并不是特别慢。

  • 如果确实要在用户访问的每个页面上确定用户的生日,您可能最好在用户登录时加载生日并通过缓存来记住生日user's session data或使用memcached

  • 如果您想要显示生日列表或进行任何其他复杂的计算,那么您可以create a view实现与您的选择和后续操作完全相同的操作插入:

    CREATE VIEW birthdays AS 
    SELECT user_id, birthdate FROM users WHERE birthdate=CURDATE();
    

    不同之处在于您只需运行一次CREATE VIEW语句(它是持久的)。您可以像查询表一样查看视图,并在日期更改或插入新用户记录时自动更新。

    再次 - 如果你真的不需要查询它或者不得不用它来做任何花哨的东西,这是非常矫枉过正的。