当产品重新有货时,我需要向客户发送短信(使用任何SMS API)。
我已经重写 Mage_ProductAlert_Model_Observer 类,并在我的自定义模块的Observer.php文件中添加了SMS API,但它没有向客户发送短信。为什么呢?
此外,它仅显示两个客户详细信息,而不是所有订阅产品库存警报的客户。这是我的代码
Observer.php
<?php
class My_Alert_Model_ProductAlert_Observer
{
public function process()
{
$customer_stock_alerts = Mage::getModel('productalert/stock')
->getCollection()
->addStatusFilter(0)
->setCustomerOrder();
foreach ($customer_stock_alerts as $alert){
$stock_back_product = $alert->getProductId();
$current_product=Mage::getModel('catalog/product')->load($stock_back_product);
$current_product_name = $current_product->getName();
$customer_info = Mage::getModel('customer/customer')->load($alert->getCustomerId());
$customer_name = $customer_info->getPrimaryBillingAddress()->getFirstname();
$customer_mobile = $customer_info->getPrimaryBillingAddress()->getTelephone();
$message = 0;
$message = "Dear $customer_name, Product $current_product_name is back in Stock";
$message=urlencode($message);
$sendsms = "http://api.msg91.com/api/sendhttp.php?sender=MSGIND&route=4&mobiles=$customer_mobile&authkey=xxxxxxxxxxxxxxxxxxx&country=91&message=$message";
file_get_contents($sendsms);
}
}
}
?>
config.xml中
<?xml version="1.0"?>
<config>
<modules>
<My_Alert>
<version>0.0.1</version>
</My_Alert>
</modules>
<global>
<models>
<my_alert>
<class>My_Alert_Model</class>
</my_alert>
</models>
</global>
<crontab>
<jobs>
<my_alert>
<schedule>
<cron_expr>*/5 * * * *</cron_expr>
</schedule>
<run>
<model>my_alert_productalert/observer::process</model>
</run>
</my_alert>
</jobs>
</crontab>
<frontend>
<routers>
<My_Alert_First>
<use>standard</use>
<args>
<module>My_Alert</module>
<frontName>my-alert</frontName>
</args>
</My_Alert_First>
</routers>
</frontend>
</config>
任何人都可以分享这个问题吗?为什么短信不发送? 我正在使用Magento 1.9。
答案 0 :(得分:0)
在Magento处理产品库存警报集合的方法。我们的客户拥有超过40,000名订户,超过30,000名正在等待状态从“缺货”更改为“有库存”。因此,当Magento尝试从表product_alert_stock加载40.000条记录到收集时,由于内存限制,php会失败。
我认为您没有使用您的扩展程序更改核心文件,link可以帮助您。