Php 有关已保存搜索、程序和安全/性能提示的电子邮件警报&;把戏?

Php 有关已保存搜索、程序和安全/性能提示的电子邮件警报&;把戏?,php,mysql,crontab,alerts,Php,Mysql,Crontab,Alerts,我为我的用户建立了电子邮件提醒(现在只有2000人) 因此,每天晚上crontab都会执行一个php脚本来查询mysql,以查找与用户保存的搜索匹配的内容。在我的情况下,这是一个分类网站,但我想学习,以防我不得不为更大的客户建立一些东西 我关注的是: 如果我的用户增长了x10或 x100次?服务器将要运行吗 崩溃你有什么建议吗 关于管理这样的事情 有办法保护我的文件吗 cron/nightly_script.php即将发布 在调用它的外部执行表单 浏览器的url?考虑 tham im在cront

我为我的用户建立了电子邮件提醒(现在只有2000人) 因此,每天晚上crontab都会执行一个php脚本来查询mysql,以查找与用户保存的搜索匹配的内容。在我的情况下,这是一个分类网站,但我想学习,以防我不得不为更大的客户建立一些东西

我关注的是:

  • 如果我的用户增长了x10或 x100次?服务器将要运行吗 崩溃你有什么建议吗 关于管理这样的事情

  • 有办法保护我的文件吗 cron/nightly_script.php即将发布 在调用它的外部执行表单 浏览器的url?考虑 tham im在crontab中使用字符串 比如:

    lynx[绝对url/script.php]

  • 电子邮件爆炸呢?每人 查询是否具有查询结果 脚本发送电子邮件,因此它意味着 大量的电子邮件…会是这样吗 自动考虑垃圾邮件,并且 那我就可以被列入黑名单了

  • 谢谢

  • 嗯,您可能应该修改脚本,以便分散负载。例如,您可以让cron一天运行4次以上,每次运行一部分用户,而不是一天运行一次

  • 您可以将其从web服务器目标路径中取出,并将cron放在外部无法访问的位置。它可以这样执行:php/location/of/script.php

  • 我猜它会根据你发给它的人的不同而不同,但是你应该考虑你发送这个通知的频率。

  • 嗯,您可能应该修改脚本,以便分散负载。例如,您可以让cron一天运行4次以上,每次运行一部分用户,而不是一天运行一次

  • 您可以将其从web服务器目标路径中取出,并将cron放在外部无法访问的位置。它可以这样执行:php/location/of/script.php

  • 我猜它会根据你发给它的人的不同而不同,但是你应该考虑你发送这个通知的频率。


    至于第2个问题,最好的解决方案是将脚本移到文档根目录之外,这样就无法从浏览器访问它,并直接调用它

    php [location/script.php]
    
    如果你不能做到这一点,我会做一个IP检查,只允许从本地主机IP调用它


    您还可以建立安全检查:存储上次向特定用户发送电子邮件的时间,并在发送另一封电子邮件之前进行检查。这可以防止crontab问题和黑客攻击。

    至于第二个问题,最好的解决方案是将脚本移到文档根目录之外,这样就无法从浏览器访问脚本,并直接调用它

    php [location/script.php]
    
    如果你不能做到这一点,我会做一个IP检查,只允许从本地主机IP调用它


    您还可以建立安全检查:存储上次向特定用户发送电子邮件的时间,并在发送另一封电子邮件之前进行检查。这可以防止crontab问题和黑客攻击。

    第一点:监视服务器,观察负载和运行时间。它不应该使它崩溃,但您可能会发现负载过高,对网页的请求开始变慢

    但需要注意的是PHP的内存垃圾有时会很奇怪,所以请注意cron作业的内存使用情况。如果达到高位,PHP将崩溃

    如果它开始变得越来越多,有很多解决方案;例如,不需要将web服务器和电子邮件发送在同一台机器上。只要他们可以访问相同的数据库,就可以设置第二台服务器,只用于发送电子邮件。这正是云计算的完美之处,租用第二台服务器,每晚4小时(或其他时间),其余时间关闭


    这只是一个建议。。。有很多解决方案,具体取决于您的情况。

    第一点:监控服务器,观察负载和运行所需的时间。它不应该使它崩溃,但您可能会发现负载过高,对网页的请求开始变慢

    但需要注意的是PHP的内存垃圾有时会很奇怪,所以请注意cron作业的内存使用情况。如果达到高位,PHP将崩溃

    如果它开始变得越来越多,有很多解决方案;例如,不需要将web服务器和电子邮件发送在同一台机器上。只要他们可以访问相同的数据库,就可以设置第二台服务器,只用于发送电子邮件。这正是云计算的完美之处,租用第二台服务器,每晚4小时(或其他时间),其余时间关闭

    这只是一个建议。。。有很多解决方案,这取决于你的情况

    如果我的用户增长了x10或 x100次?服务器将要运行吗 崩溃你有什么建议吗 关于管理这样的事情

    由于大量内存/cpu使用,您的服务器可能会崩溃/变得非常慢。您应该使用诸如redis/beanstalkd/gearmand之类的消息队列来限制电子邮件警报。我更喜欢redis。与支持阻止弹出/推送的库一起使用

    有办法保护我的文件吗 要执行的cron/nightly_script.php 表单外部在的url中调用它 浏览器?考虑一下我使用 crontab中的字符串,如:

    如果要扩展,请不要使用cron。而是创建两个守护进程

    • 1计划向消息队列发送消息(此部分也可以是cron)
    • 1处理发送到消息队列的消息
    守护进程不需要每次生成,而且生成过程(相对)比较昂贵。其次,脚本不应该再调用任何URL,而是直接调用PHP脚本(CLI)

    电子邮件爆炸呢?每人 查询是否具有查询结果 脚本发送电子邮件,因此它意味着 大量的电子邮件…会是这样吗 自动考虑垃圾邮件,然后