大家好,我想问几个问题。我正在使用托管在共享服务器上的 hostgators 业务计划,当我与他们讨论限制时,他们告诉我发送电子邮件的限制是每小时 500 封(我想但不太确定可能是 1000 封,但事实并非如此重要。)而且我认为当我的工作上线时我会遇到问题,所以我正在考虑制作某种脚本(PHP)来监控外发电子邮件允许发送 350 封电子邮件并将其余的搁置直到一个小时过去,然后再发送 350 等等,依此类推。我正计划使用 XML RPC 为引擎构建一个更新系统并与远程服务器通信,如果有任何更新可用,可以开始读取它们并将它们应用到系统 由 CRON 触发。这就是我现在想提供的信息:
<强>1。邮件监控:
1.1如何获取邮件发送量?
1.2 我应该如何为其设置 CRON?(如果我设置 CRON 的时间少于 5 分钟,我认为它会被删除。)或者我应该使用替代方法吗?
1.3 谁能给我一个示例脚本?
<强>2。 XML RPC 更新程序:
2.1制作它的最佳方法是什么?
2.2除了“检查”->“响应[true|false]”->“读取更新内容”->“写入更新内容”之外,还得用什么方法?
2.3 制作这样的系统是个好主意吗?制作它的最安全方法是什么?
您的数据库中始终可以有一个表,用于设置特定日期发送的电子邮件数量。您可以在 PHP 查询中使用 UPDATE email_count SET emails = emails + 1 WHERE date = $current_date
($current_date
是 PHP 必须从时间戳中获取的变量)和之前发送电子邮件,使用 SELECT
查询检查此值。
当然,您需要决定自己想要什么。如果达到限制,则禁止发送电子邮件(我将以用户注册确认电子邮件为例),或者只是限制(推迟)它们。如果您决定禁止,您的工作很简单:如果金额已经达到限制,您只需禁用注册表即可。
如果您决定节流,您将遇到非常复杂的问题,需要非常复杂的解决方案。您将需要生成电子邮件(或者作为它们的现有文本格式,或者只是可变内容)并将它们与 To:
值一起存储在数据库中。您还需要准确性和设置 cron
,以便在接下来的一个小时内,您首先解析前一小时的“遗留” 电子邮件。
但是,如果前一天不仅产生了这么多电子邮件,而且之后的一个小时也“阻塞”,该怎么办?您需要衡量和建模您网站的使用情况,并获得最佳示例。那里可能有一些方程式可以帮助您设置节流模式。限额的一半是每小时预留给可能的遗留 电子邮件?服用一些 population statistics methods在帐户?有多种选择。
请注意,如果服务器上安装了 CLI PHP,cron
也可以执行 PHP 脚本。只需确保以更适合纯文本报告文件的方式生成 cron-ran 文件的输出,因为可以将 cron 设置为将文件的输出保存到文件系统某处的文件中。
00 * * * * /usr/local/bin/php /home/john/myscript.php
获取远程更新需要您注意防止任何恶意数据。您应该尝试将更新信息封装到压缩容器(gzip?)中并计算其校验和。方法应该是:
- 查询远程服务器
- 检查远程服务器上的差异/更新
- 获取响应(如果有差异)
- 通过一些清理和散列检查本地差异
- 合并获取的更新
如果您还要设置远程服务器的系统(XML-RPC 可能会发送什么作为响应),我会尝试实现一种具有足够安全检查的可靠方法。但要尽量防止过早优化和过度杀伤。
但是,您还可以使用其他包装器与远程服务器进行通信。取cURL举个例子。