php 中ob_flush函数 和 flush函数

ob_flush()函数: 取出PHP buffering中的数据,放入server buffering

flush()函数: 取出Server buffering的数据,放入browser buffering

例如代码:

         <?php
             echo str_repeat('m0sh1' ,1000);    
             for($i=0;$i<4;$i++) {
                 echo $i.'<br />';
                 ob_flush();
                 flush();
                 sleep(1);
             }
         ?>
          <?php
               //header("content-type:text/html;charset='utf-8'");
               // 提示错误 Cannot modify header information - headers already sent by
          ?>

执行发现

这里代码输出结果是一行一行输出的,
 注意:正确使用二者的顺序是. 先ob_flush, 然后flush

此文章通过 python 爬虫创建,原文是自己的csdn 地址: php 中ob_flush函数 和 flush函数

Magento 常用SQL命令

Magento SQL命令可以加快解决你遇到的问题,不同版本,数据库可能会有所不同,所以SQL命令可能也会有所变化,在用SQL命令的时候一定要记得备份!!

1. 批量调整所有产品的价格 ( 参考命令在 1.3 下通过 )
UPDATE `catalog_product_entity_decimal` SET value=round(value*1.45) WHERE attribute_id=99;
执行完后,需要到缓存管理里刷新:Layered Navigation Indices ,即可同步数据库里的关联表。

2. 批量处理所有 exclude 状态的图片
UPDATE `catalog_product_entity_media_gallery_value` SET disabled=0 WHERE disabled=1;

3. 导出导入 Magento 所有分类和产品
分类和产品是存放在以 catalog 开头的所有表中,对这组表进行导出导入即可实现此功能。
导入分类产品的 SQL 文件前注意:
在首行加入:SET FOREIGN_KEY_CHECKS=0;
在末行加入:SET FOREIGN_KEY_CHECKS=1;
原因是 Magento 使用 Innodb 存储引擎。

4. 批量修改分类的 Display Settings ——> Is Anchor 值为 No
UPDATE `catalog_category_entity_int` set value=0 WHERE value=1 AND attribute_id=120;

5. 清空邮件队列
TRUNCATE TABLE `newsletter_queue`;
TRUNCATE TABLE `newsletter_queue_link`;
TRUNCATE TABLE `newsletter_queue_store_link`;
注意:同时向上万顾客发邮件时,不要在后台查看邮件队列,不然服务器压力会很大,待邮件发完之后,

记着清空邮件队列,这样在后台进入邮件队列就不会大量消耗服务器资源了。

6. Magento 转移站后,经常会出现下面这个提示,运行一下下面的SQL命令即可恢复正常。
错误提示: Notice: Undefined index: 0 app/code/core/Mage/Core/Model/Mysql4/Config.php on

line 92
SET FOREIGN_KEY_CHECKS=0;
update `core_store` set store_id = 0 where code=’admin’;
update `core_store_group` set group_id = 0 where name=’Default’;
update `core_website` set website_id = 0 where code=’admin’;
update `customer_group` set customer_group_id = 0 where customer_group_code=’NOT LOGGED IN’;
SET FOREIGN_KEY_CHECKS=1;
不过要明白,这个错误是使用了第三方数据库备份工具导致的,Magento 自带的备份功能是不会出现这个

错误的。

7. 根据产品的 SKU 批量将产品自定义选项设为非必填:
UPDATE `catalog_product_option` SET is_require=0 WHERE product_id IN (SELECT entity_id FROM

`catalog_product_entity` WHERE sku LIKE ‘SKU %’);

8. 关闭/开启 所有缺货产品
SET FOREIGN_KEY_CHECKS=0;
UPDATE `catalog_product_entity_int` SET value=2 WHERE attribute_id=80 and entity_id IN

(SELECT product_id FROM `cataloginventory_stock_status` WHERE stock_status=0);
SET FOREIGN_KEY_CHECKS=1;
其它说明:value=2 为关闭,1为开启,attribute_id 对应不同版本的产品禁用项,最后执行完命令需要

重建分类索引。

9. 取消所有问题邮件订阅
UPDATE `newsletter_subscriber` SET subscriber_status=3 WHERE subscriber_id IN (SELECT

subscriber_id FROM `newsletter_problem`);

10. 清除产品与分类的描述与 Meta
重置所有产品short description
UPDATE `catalog_product_entity_text` SET value=’Short Description’ WHERE

attribute_id=506;
清除所有产品Meta
UPDATE `catalog_product_entity_text` SET value=” WHERE attribute_id=97 OR

attribute_id=104;
UPDATE `catalog_product_entity_varchar` SET value=” WHERE attribute_id=103 OR

attribute_id=105;
清除所有产品URL
UPDATE `catalog_product_entity_varchar` SET value=” WHERE attribute_id=481;
清除所有分类描述:
UPDATE `catalog_category_entity_text` SET value=” WHERE attribute_id=112 OR

attribute_id=115 OR attribute_id=116;
清除所有分类URL
UPDATE `catalog_category_entity_varchar` SET value=” WHERE attribute_id=479;

11. 重置 Magento 所有 ID 统计数(如订单编码、发票编码等)
TRUNCATE `eav_entity_store`;
ALTER TABLE `eav_entity_store` AUTO_INCREMENT=1;

12. 批量禁用产品 —— 数据库操作
CREATE TABLE XYTMPTB SELECT entity_id,value FROM `catalog_product_entity_varchar` WHERE

value LIKE ‘affliction%’ AND attribute_id=96;
UPDATE `catalog_product_entity_int` SET value=1 WHERE attribute_id=273 AND entity_id IN

(SELECT entity_id FROM `XYTMPTB`);
DROP TABLE XYTMPTB;
别忘了重建索引!

13. 分类与产品的反向开关
UPDATE `catalog_category_entity_int` SET value=if(value=0,1,0) WHERE attribute_id=119;
UPDATE `catalog_product_entity_int` SET value=if(value=1,2,1) WHERE attribute_id=273;
运行一下,开的关了,关的开了,再运一下反之,最后别忘了重建索引!

14. 清站相关提示
能在后台清理的就在后台清理,直接对数据库操作有造成网站出错的可能性。其他辅助命令如下:
清除订单命令:
TRUNCATE `sales_flat_invoice`;
TRUNCATE `sales_flat_invoice_grid`;
TRUNCATE `sales_flat_invoice_item`;
TRUNCATE `sales_flat_order`;
TRUNCATE `sales_flat_order_address`;
TRUNCATE `sales_flat_order_grid`;
TRUNCATE `sales_flat_order_item`;
TRUNCATE `sales_flat_order_payment`;
TRUNCATE `sales_flat_order_status_history`;
TRUNCATE `sales_flat_quote`;
TRUNCATE `sales_flat_quote_address`;
TRUNCATE `sales_flat_quote_address_item`;
TRUNCATE `sales_flat_quote_item`;
TRUNCATE `sales_flat_quote_item_option`;
TRUNCATE `sales_flat_quote_payment`;
TRUNCATE `sales_flat_quote_shipping_rate`;
清除其它日志:
TRUNCATE `log_url_info`;
TRUNCATE `log_visitor_info`;
TRUNCATE `log_url`;
TRUNCATE `log_visitor`;
TRUNCATE `core_url_rewrite`;
TRUNCATE `report_event`;
TRUNCATE `report_viewed_product_index`;

15. Magento 数据库清理

安全模式:清理日常数据库的无用记录
TRUNCATE TABLE `log_visitor`;
TRUNCATE TABLE `log_visitor_info`;
TRUNCATE TABLE `log_url`;
TRUNCATE TABLE `log_url_info`;
干净模式:清理数据库的无用记录
TRUNCATE `log_visitor` ;
TRUNCATE `log_url_info` ;
TRUNCATE `log_visitor_info` ;
TRUNCATE `dataflow_batch_import` ;
TRUNCATE `log_url` ;
TRUNCATE `report_event` ;
TRUNCATE `log_visitor_online` ;
备注:如果是转移网站,URL 重写表 core_url_rewrite 也可清空,转完站重建 URL 即可。

16. 批量修改 SKU、Meta、Name 等字段里的部份词
UPDATE `catalog_product_entity` SET sku=replace(sku,’oldskuw’,'newskuw’) WHERE sku LIKE

‘%oldskuw%’;
UPDATE `catalog_product_entity_text` SET value=replace(value,’oldmetaw’,'newmetaw’)

WHERE value LIKE ‘%oldmetaw%’;
UPDATE `catalog_product_entity_varchar` SET value=replace(value,’oldnamew’,'newnamew’)

WHERE value LIKE ‘%oldnamew%’;

17. 批量调整指定产品的价格
create table xytmptb SELECT entity_id,value FROM `catalog_product_entity_varchar` WHERE

(value LIKE ‘%Boot%’ OR value LIKE ‘%Shoes%’) AND attribute_id=60;
UPDATE `catalog_product_entity_decimal` SET value=value+10 WHERE entity_id IN (SELECT

entity_id FROM `xytmptb`) AND attribute_id=64;
drop table xytmptb;
最后别忘了重建价格索引!

转自:http://www.51qcweb.com/collate-the-most-common-magento-sql-commands.html

此文章通过 python 爬虫创建,原文是自己的csdn 地址: Magento 常用SQL命令

magento Shopping Cart Price Rule 购物车促销规则

magento 有着强大的促销规则设置,能满足许多常规的促销手段。

(当然在现实问题中,我们在很多地方是需要定制开发的。)

这里主要解析下magento 的 Shoppping Cart Price Rule.

我们先假定实现一个购买sku为 VGN-TXN27N/B的商品1个就免费送1个。

1.首先在后台选择 promotions->Shoppping Cart Price Rules

2. 设定 rule information 选项卡(这里就不全面演示各种情况的设定了。)

coupon 选择 specific coupon即使用优惠券的方式

use Auto Generation 表明需要自己优惠券代码。

use per Coupon 表明一个优惠券可以用几次, 举例:如果设定为2用户 A 使用了这张优惠券后,用户 B 也是可以使用的,

而设定为1表示 A 使用了 B 就不能再使用了。

use per Customer 表明一个用户可以使用几次,举例: 如果设定为2 那么用户 A 使用这张优惠券购买完后,再次购买还是可以使用的,但是第三次就不可以了。

Priority 优先级(避免和其他的shopping cart price rule 冲突)

3.Actions 选项卡

先说actions 选项

apply 这个select 下有4个选项

1.Percent of product price discount 百分比折扣

2.Fixed amount discount 定额折扣

3.Fixed amount discount for whole cart 整个购物车定额折扣

4.Buy X get Y free (discount amount is Y) 买x免费获得y个

这里选择我之前一直没弄明白的buy x get y free (其实这个你只要一测试就发现怎么使用了,就是不能懒 。)

discount amount 代表y , Discount Qty Step(Buy x) 代表x 这里就是买一送一的意思。

Free Shipping 是否可以免运费

Stop Further Rules Processing 是否停止进一步处理规则

(Maximun Qty Discount is Applied To 和  Apply to Shipping Amount 作用没测试过,有谁测试过帮忙告诉下,拜谢!)

细看这个选项卡下面还有一栏内容

Apply the rule only to cart items matching the following conditions (leave blank for all items)

暂时先不管(下面会回头继续讲解,这个功能很重要的

4.Conditions 选项卡

设定(促销)规则生效的条件,注意:这里的条件针对的是购物车里的所有商品,或者说整个购物车。

假设我们设定 购买产品sku为 VGN-TXN27N/B 的

这里首先需要选择Product attribute combination 然后才会有sku(没有的话去属性那里 修改使用促销规则为是即可)

这里和actions 选项卡下面的条件构成了促销规则的强大的灵活性。你可以根据实际情况进行各种各样的设置。

最后就是生成优惠券了

5.Manage Coupon Codes 选项卡

1).Coupon Qty 优惠券数量

2).Code Length 优惠券代码长度

3).Code Format 优惠券代码的格式

4).Code Prefix 优惠券前缀

5).Code Suffix 优惠券后缀

6).Dash Every X Characters 每几个字符进行分割

设置好后点击生成即可。

这个时候保存就行了。(当然你也可以去Labels 选项卡设置前台显示的优惠券名称)

(购物车规则是没有应用规则按钮的,只要是active就会生效的,而 catalog Price Rule 不仅仅需要保存,还要点击Apply 才能生效。好吧又唠叨了。。。)

6. 前台效果

这时候我们选择sku 为 VGN-TXN27N/B 的商品,添加购物车,并使用生成的其中一个优惠券即可。

那么买1赠1这个规则是如何生效的呢?

原来你添加一个在购物车,使用优惠券后并没有任何变化,用户根本不知道你的赠送是怎么给的。

当你修改购物车数量为2个的时候就会发现价格减去了1个的单价。买1赠1就是这么实现效果的。

7. 分析

到这里并没有结束,因为你再次添加一个商品,修改数量为2 会发现这个商品也减少了一个单价,我们并不需要这个商品

也是买1赠1。 另一方面修改购物车中商品数量为4会发现减去了价格减去了两个单价,意味着每买1个都赠送1个。

假设我们希望只赠送一次。应该怎么办呢?

8.进一步完善

回到之前的 Conditions选项卡,前面强调过这个选项卡针对的是整个购物车,当添加了一个sku满足条件的商品时,规则就生效了

且针对的是每一个商品,即每个商品都可以买一赠一。

那么我们需要去掉这里的条件,将条件设置到actions 选项卡的下面设置条件的那栏内容里。这里此时只针对符合条件的商品。

其它的sku不是 VGN-TXN27N/B 的是不会买一赠一的,另一方面限制只赠送一次。这里面的设置就存在缺陷了,如图:

及设置数量为2才生效。但如果用户想要购买4件,即花三件的钱这样就不能实现了。(难道必须修改代码?)

(大家有其它好的方法麻烦告诉下。 再次拜谢!)

这个时候基本的要求就实现了。通过这里的设置,你完全可以设置类似

0元购买(不是添加一个0元的商品。。。),满减,打折等等优惠政策了。

本文不涉及代码,仅仅是设置操作。大牛勿喷,欢迎讨论,分享你实现的独特的促销手段。

此文章通过 python 爬虫创建,原文是自己的csdn 地址: magento Shopping Cart Price Rule 购物车促销规则

magento Shopping Cart Price Rule 购物车促销规则

magento 有着强大的促销规则设置,能满足许多常规的促销手段。

(当然在现实问题中,我们在很多地方是需要定制开发的。)

这里主要解析下magento 的 Shoppping Cart Price Rule.

我们先假定实现一个购买sku为 VGN-TXN27N/B的商品1个就免费送1个。

1.首先在后台选择 promotions->Shoppping Cart Price Rules

2. 设定 rule information 选项卡(这里就不全面演示各种情况的设定了。)

coupon 选择 specific coupon即使用优惠券的方式

use Auto Generation 表明需要自己优惠券代码。

use per Coupon 表明一个优惠券可以用几次, 举例:如果设定为2用户 A 使用了这张优惠券后,用户 B 也是可以使用的,

而设定为1表示 A 使用了 B 就不能再使用了。

use per Customer 表明一个用户可以使用几次,举例: 如果设定为2 那么用户 A 使用这张优惠券购买完后,再次购买还是可以使用的,但是第三次就不可以了。

Priority 优先级(避免和其他的shopping cart price rule 冲突)

3.Actions 选项卡

先说actions 选项

apply 这个select 下有4个选项

1.Percent of product price discount 百分比折扣

2.Fixed amount discount 定额折扣

3.Fixed amount discount for whole cart 整个购物车定额折扣

4.Buy X get Y free (discount amount is Y) 买x免费获得y个

这里选择我之前一直没弄明白的buy x get y free (其实这个你只要一测试就发现怎么使用了,就是不能懒 。)

discount amount 代表y , Discount Qty Step(Buy x) 代表x 这里就是买一送一的意思。

Free Shipping 是否可以免运费

Stop Further Rules Processing 是否停止进一步处理规则

(Maximun Qty Discount is Applied To 和  Apply to Shipping Amount 作用没测试过,有谁测试过帮忙告诉下,拜谢!)

细看这个选项卡下面还有一栏内容

Apply the rule only to cart items matching the following conditions (leave blank for all items)

暂时先不管(下面会回头继续讲解,这个功能很重要的

4.Conditions 选项卡

设定(促销)规则生效的条件,注意:这里的条件针对的是购物车里的所有商品,或者说整个购物车。

假设我们设定 购买产品sku为 VGN-TXN27N/B 的

这里首先需要选择Product attribute combination 然后才会有sku(没有的话去属性那里 修改使用促销规则为是即可)

这里和actions 选项卡下面的条件构成了促销规则的强大的灵活性。你可以根据实际情况进行各种各样的设置。

最后就是生成优惠券了

5.Manage Coupon Codes 选项卡

1).Coupon Qty 优惠券数量

2).Code Length 优惠券代码长度

3).Code Format 优惠券代码的格式

4).Code Prefix 优惠券前缀

5).Code Suffix 优惠券后缀

6).Dash Every X Characters 每几个字符进行分割

设置好后点击生成即可。

这个时候保存就行了。(当然你也可以去Labels 选项卡设置前台显示的优惠券名称)

(购物车规则是没有应用规则按钮的,只要是active就会生效的,而 catalog Price Rule 不仅仅需要保存,还要点击Apply 才能生效。好吧又唠叨了。。。)

6. 前台效果

这时候我们选择sku 为 VGN-TXN27N/B 的商品,添加购物车,并使用生成的其中一个优惠券即可。

那么买1赠1这个规则是如何生效的呢?

原来你添加一个在购物车,使用优惠券后并没有任何变化,用户根本不知道你的赠送是怎么给的。

当你修改购物车数量为2个的时候就会发现价格减去了1个的单价。买1赠1就是这么实现效果的。

7. 分析

到这里并没有结束,因为你再次添加一个商品,修改数量为2 会发现这个商品也减少了一个单价,我们并不需要这个商品

也是买1赠1。 另一方面修改购物车中商品数量为4会发现减去了价格减去了两个单价,意味着每买1个都赠送1个。

假设我们希望只赠送一次。应该怎么办呢?

8.进一步完善

回到之前的 Conditions选项卡,前面强调过这个选项卡针对的是整个购物车,当添加了一个sku满足条件的商品时,规则就生效了

且针对的是每一个商品,即每个商品都可以买一赠一。

那么我们需要去掉这里的条件,将条件设置到actions 选项卡的下面设置条件的那栏内容里。这里此时只针对符合条件的商品。

其它的sku不是 VGN-TXN27N/B 的是不会买一赠一的,另一方面限制只赠送一次。这里面的设置就存在缺陷了,如图:

及设置数量为2才生效。但如果用户想要购买4件,即花三件的钱这样就不能实现了。(难道必须修改代码?)

(大家有其它好的方法麻烦告诉下。 再次拜谢!)

这个时候基本的要求就实现了。通过这里的设置,你完全可以设置类似

0元购买(不是添加一个0元的商品。。。),满减,打折等等优惠政策了。

本文不涉及代码,仅仅是设置操作。大牛勿喷,欢迎讨论,分享你实现的独特的促销手段。

此文章通过 python 爬虫创建,原文是自己的csdn 地址: magento Shopping Cart Price Rule 购物车促销规则