我正在尝试运行基于SendGrid和cron的自动邮件服务.我已经尝试了所有可能的组合来使PHP解释器运行我的脚本,虽然cron日志说每分钟执行一次作业,我定义的日志文件仍然是空的,没有收到任何电子邮件,但是当我通过浏览器访问页面时一切正常.
mydev.com是我在我的机器上使用的虚拟主机,我没有对php配置进行任何更改(最长执行时间等).
此外,我在网上做了我的研究,我安装了php5-cli,以及所有需要的依赖项.
下面是我在终端输入sudo crontab -e后添加到cron文件的行:
* * * * * php /var/www/mydev/dev/mailServiceTest.php >> /var/www/mydev/CRON_LOG.txt 2> /dev/null
* * * * * /usr/bin/php /var/www/mydev/dev/mailServiceTest.php >> /var/www/mydev/CRON_LOG.txt 2> /dev/null
* * * * * /usr/bin/php http://mydev.com/dev/mailServiceTest.php >> /var/www/mydev/CRON_LOG.txt 2> /dev/null
* * * * * /usr/bin/lynx http://mydev.com/dev/mailServiceTest.php >> /var/www/mydev/CRON_LOG.txt 2> /dev/null
Run Code Online (Sandbox Code Playgroud)
这是cron日志的输出:
Apr 15 15:13:01 oleg-Lenovo-G580 CRON[8948]: (root) CMD (/usr/bin/php http://mydev.com/dev/mailServiceTest.php >> /var/www/mydev/CRON_LOG.txt 2> /dev/null)
Apr 15 15:13:01 oleg-Lenovo-G580 CRON[8947]: (root) CMD (php /var/www/mydev/dev/mailServiceTest.php >> /var/www/mydev/CRON_LOG.txt 2> /dev/null)
Apr 15 15:13:01 …Run Code Online (Sandbox Code Playgroud) 我有一个遗留用户数据库,我想将其集成到一个新的Django项目中.
用户密码使用简单的MD5加密(PHP md5()函数)保存在旧数据库中,无需任何腌制.
覆盖django.contrib.auth的check_password和set_password不是一个选项,因为我已经有新的用户在新的Django项目上处于活动状态.
看着passlib,但不幸的是它不会做什么是需要要在这一具体项目来完成.
基本上,我唯一的选择是以某种方式将哈希转换为Django salted格式,或者实现自定义check_password方法,这将确定密码是普通MD5还是django密码(甚至可能是我的自定义用户模型中的参数,类似legacy=True布尔标志的东西.
任何帮助深表感谢.
我有以下查询:
SELECT url, url_hash from pages WHERE url_hash IN (SHA1('URL1'), SHA1('URL2'), SHA1('URL3'))
ORDER BY FIND_IN_SET(url_hash, "SHA1('URL1'), SHA1('URL2'), SHA1('URL3')")
Run Code Online (Sandbox Code Playgroud)
我会保持结果集的顺序与 IN 子句中参数的顺序相同。
我发现了这个问题。
问题是 mysql 不知道如何解释一组 SHA1 函数,如果我将它们作为字符串传递,它们不会被正确计算,如果我传递给它们一个表达式(不带引号),我会收到以下错误:
OperationalError: (1582, "Incorrect parameter count in the call to native function 'FIND_IN_SET'")
Run Code Online (Sandbox Code Playgroud) 我想知道是否有办法使用角度$ cookieStore服务从几个不同的子域访问cookie集,让我们说:api.yoursite.com www.yoursite.com和jsutyoursite.com
该文件完全不提这个问题.
有解决方案,还是我必须使用较低级别的JavaScript Cookie API?
正如在docs类中看到的那样,任务是表达复杂逻辑的公平方式.
但是,文档没有指定如何将基于闪亮的新创建的基于类的任务添加到您CELERY_BEAT_SCHEDULE(使用django)
我尝试过:
celery.py
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS, 'task_summary')
@app.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):
from payments.tasks.generic.payeer import PayeerPaymentChecker
from payments.tasks.generic.ok_pay import OkPayPaymentChecker
okpay_import = OkPayPaymentChecker()
payeer_imprt = PayeerPaymentChecker()
sender.add_periodic_task(60.0, okpay_import.s(),
name='OkPay import',
expires=30)
sender.add_periodic_task(60.0, payeer_imprt.s(),
name='Payeer import',
expires=30)
Run Code Online (Sandbox Code Playgroud)
- 要么 -
payments/task_summary.py
from tasks.generic.import import OkPayPaymentChecker, PayeerPaymentChecker
run_okpay = OkPayPaymentChecker()
run_payeer = PayeerPaymentChecker()
CELERY_BEAT_SCHEDULE = {
# yes, i did try referring to the class here
'check_okpay_payments': {
'task': 'payments.tasks.task_summary.run_okpay',
'schedule': timedelta(seconds=60),
},
'check_payeer_payments': {
'task': 'payments.task_summary.run_payeer',
'schedule': timedelta(seconds=60), …Run Code Online (Sandbox Code Playgroud) 我使用SendGrid官方PHP库和SMTP API(自动邮件程序在Ubuntu服务器上作为cron作业运行)构建了一个自动邮件程序.
生产服务器上的内存限制设置为32M,但在生产服务器上第一次运行应用程序之一时,我收到了消息
允许的内存大小为33554432字节耗尽,wast尝试分配256478字节
自256478 <33554432以来,这根本没有任何意义,但我怀疑我在某处有内存泄漏.
根据这篇文章,PHP有内存泄漏问题,在处理对象之间的相互关系时,我使用自己的Wrapper类来使代码更具可读性和结构,主要的mailService类,以及每个任务的类,实现一个接口,并返回每封电子邮件的所有特定数据(标题,子值,收件人列表).
我将首先在我的界面和每个类中添加一个析构函数,以确保没有内存泄漏,但我不确定这是否会解决问题,因为根据我执行的内存基准测试,大部分执行时间,内存由SwiftMailer的MailTransport.php类消耗.
所以我的问题基本上,我怎么能在每次迭代时重置这个类的内存使用情况?,是否有内置的东西,或者我应该自己实现这样的方法?
非常感谢任何帮助.
小可视化:
php ×3
django ×2
python ×2
angularjs ×1
celery ×1
celerybeat ×1
cookies ×1
cron ×1
crontab ×1
cryptography ×1
encryption ×1
find-in-set ×1
javascript ×1
memory-leaks ×1
mysql ×1
sendgrid ×1
sql ×1
ubuntu ×1