标签: codeigniter

关于从php发送电子邮件的意见

我正在准备一个网站,它会向注册用户发送电子邮件通知.根据我的经验,我知道,发送电子邮件对PHP来说是一个痛苦的过程,特别是当我们谈论成千上万时.我的一个网站不时发送电子邮件给1000-1500人.PHP需要大约5分钟来完成,所以我们在服务器负载最低的情况下一夜之间运行它.我正在使用mail()没有任何SMTP的本机功能.这在专用服务器上运行良好,但我不是这个解决方案的忠实粉丝.

我希望能够随时发送类似的金额,而不会让服务器崩溃(并将其列入黑名单).
我读过,理想的解决方案是每隔几分钟从Cron触发的脚本中批量发送电子邮件(比如20).在我看来,这似乎是一个非常合理的想法,但是...如果我无法访问Cron(并非所有托管服务提供商都可以访问它),并且网站不够流行,无法在页面上触发脚本加载?

我坚持使用我的服务器来进行邮件而不是任何外部解决方案.

PS.我找到了这样的解决方案:http://www.mywebcron.com/但是这有什么用的吗?


编辑

只是添加:

  • 我正在使用CodeIgniter,
  • 从我当前的服务器发送电子邮件的速率通常为每封电子邮件0.2秒.

php email cron codeigniter

7
推荐指数
1
解决办法
902
查看次数

如何在codeigniter(php)中检查变量是否存在?新问题

嘿,我是php和codeigniter的新手.我知道在codeigniter的视图中你可以回显像这样的变量

<?php echo $var ?>
Run Code Online (Sandbox Code Playgroud)

但如果说,我没有传递变量$ var,我得到一个令人讨厌的

<h4>A PHP Error was encountered</h4>
Run Code Online (Sandbox Code Playgroud)

在我的HTML源代码中.我在模板之前使用过django,如果变量不存在,它们根本就不渲染它.在php/codeigniter中有没有办法说'如果$ var存在,那么其他什么都不做'?

我试过了:

<?php if($title): ?>
    <?php echo $title ?>
<?php endif; ?>
Run Code Online (Sandbox Code Playgroud)

但这是一个错误.谢谢!

php codeigniter view

7
推荐指数
1
解决办法
1万
查看次数

删除降价格式以便快速摘录

任何人都知道一个脚本或已经构建的功能,可以帮助我使用现有的降价格式内容创建一个快速摘录?

我正在寻找格式化结果,如StackOverflow,我有标题,以及简短的摘录,基本上是新闻视图.我想完全删除降价,只保留几个字.

我担心的是我将使用codeigniter助手word_limiter()来限制输出.这可能会造成破损降价:

**This is a sentence which has some _markdown_ that is [cutoff..
Run Code Online (Sandbox Code Playgroud)

所以我不知道该怎么做.

我的所有内容都用markdown存储(不是HTML格式化),否则我会做'striptags'等;

我在这里找到了类似于Ruby的东西:Truncate Markdown?,但我会喜欢PHP的东西.

我只是不确定我是否应该*_[]()>基本上删除所有字符?但如果有一个URL(分成两半),我担心它看起来很讨厌.

思考?我看了一下,但乍一看还没有找到任何剥离降价的东西.

php markdown codeigniter

7
推荐指数
1
解决办法
2828
查看次数

PHP Codeigniter:下拉菜单中的set_value

我有以下观点,但set_value如果没有它默认为请选择,我该如何申请?

<label for="add_fields_type">Type: </label>
<select name="add_fields_type" id="add_fields_type">
    <option value="">Please Select</option>
    <option value="<?php echo set_value('input'); ?>">Input</option>
    <option value="<?php echo set_value('textarea'); ?>">Text Area</option>
    <option value="<?php echo set_value('radiobutton'); ?>">Radio Button</option>
    <option value="<?php echo set_value('checkbox'); ?>">Check Box</option>
</select>
Run Code Online (Sandbox Code Playgroud)

更新:

视图:

<label for="add_fields_placeholder">Placeholder: </label>
    <select name="add_fields_placeholder" id="add_fields_placeholder">
        <option value="">Please Select</option>
        <option value="<?php echo set_value('yes'<?php echo set_select('add_fields_placeholder','yes', ( !empty($placeholderType) && $placeholderType == "yes" ? TRUE : FALSE ));?>">Yes</option>
        <option value="<?php echo set_value('no' <?php echo set_select('add_fields_placeholder','no', ( !empty($placeholderType) && $placeholderType == "no" ? TRUE : …
Run Code Online (Sandbox Code Playgroud)

php codeigniter

7
推荐指数
2
解决办法
4万
查看次数

CodeIgniter HMVC扩展了MX_Controller,无法正确使用get_instance

我在/ application/core中有一个控制器

/application/core/CMS_Controller.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

require APPPATH."third_party/MX/Controller.php";

class CMS_Controller extends MX_Controller {

    public function __construct() {
        parent::__construct();
    }

    public function show_something() {
        echo "something shown";
    }
} 
Run Code Online (Sandbox Code Playgroud)

我在模块中有另一个控制器(/modules/my_module/controllers/controller.php),它从CMS_Controller扩展而来

/modules/my_module/controllers/controller.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Controller extends CMS_Controller {

    public function index() {
        $this->load->view('view');
    }
} 
Run Code Online (Sandbox Code Playgroud)

并且,在view.php(/modules/my_module/views/view.php)中我这样做: /modules/my_module/views/view.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 $ci =& get_instance();
 echo $ci->show_something();
?> 
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

致命错误:在第3行的/home/gofrendi/public_html/No-CMS/modules/my_module/views/view.php中调用未定义的方法CI :: …

php codeigniter hmvc

7
推荐指数
1
解决办法
1万
查看次数

CodeIgniter Active Record与常规查询

目前我使用CodeIgniter进行常规查询,即:

$sql = "
    SELECT *
    FROM my_table
    WHERE item_id > 1
";    
$q = $this->db->query($sql);
Run Code Online (Sandbox Code Playgroud)

我已经开始研究ActiveRecord,它确实看起来不错,并且无论使用哪个数据库驱动程序都具有构建查询的优势 - 但是,我通常严格使用每个项目的单个数据库类型,所以这不是真正的对我有利.

我发现在我看来,常规查询(正如我在我的示例中所示)更易读,更容易维护,因此我目前正在考虑保持常规查询.

除了上面提到的原因,我应该选择哪个,以及原因是什么?

谢谢

database activerecord codeigniter

7
推荐指数
4
解决办法
1万
查看次数

Regexp过滤表

好吧,我有一个表,由一些开源软件输出,但它不会以实际的表格格式输出,例如

<table> 
  <thead>
     <td>Heading</td>
  <thead>
  <tbody>
    <tr>
       <td>Content</td>
    </tr>
  <tbody>
</table
Run Code Online (Sandbox Code Playgroud)

相反,开发软件的人决定输出这样的表是一个好主意

+------------+-------------+-------+-------------+------------+---------------+----------+
| HEADING 1  | HEADING 2   | ETC   | ANOTHER     | HEADING3   | HEADING4     | SML |
+------------+-------------+-------+-------------+------------+---------------+----------+
| content   | more content | cont  | More more   | content    | content 2.0  | litl |
| content   | more content | cont  | More more   | content    | content 2.0  | litl |
| content   | more content | cont  | More more   | content    | …
Run Code Online (Sandbox Code Playgroud)

php ruby regex codeigniter ruby-on-rails-3

7
推荐指数
1
解决办法
209
查看次数

Codeigniter:在Windows XP中将错误显示为"无法选择指定的数据库:项目"

我正在使用Windows XP并使用EasyPHP作为服务器.我已将Codeigniter与TankAuth集成在一起.但是,当我尝试打开我的赋值文件夹时,它显示错误如下:

Unable to select the specified database: project

Filename: C:\Program Files\EasyPHP-12.1\www\assignment\system\database\DB_driver.php

Line Number: 140
Run Code Online (Sandbox Code Playgroud)

我的数据库.php中的代码如下"

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = 'root123';
$db['default']['database'] = 'project';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
Run Code Online (Sandbox Code Playgroud)

我检查了我的database.php,里面我有数据库名称'project'.

我尝试使用主机名作为'localhost'和'127.0.0.1',但没有一个工作.

我已将默认控制器设置为'auth'即TankAuth的默认控制器.

并在'auth'控制器中的构造中初始化了'数据库'库.

刚才我使用Wamp Server尝试了同样的事情.但是,得到了相同的结果.

在某处我读到我应该尝试制作$db['default']['pconnect']和

$db['default']['db_debug']到FALSE.但它没有用. …

wamp codeigniter easyphp wampserver tankauth

7
推荐指数
2
解决办法
3万
查看次数

具有数千个插入的Codeigniter的insert_batch()缺少记录

我正在使用insert_batch()大量插入10000多行到数据库中的表.我正在进行一些测试,我注意到有时所有10.000多行都被正确插入,但在某些情况下我会错过表格总数中的100多行.

我所拥有的记录中的字段数据是可以的,因为我为每个测试使用相同的数据,而且大多数时候我都没有问题.例如,我尝试了20次将相同的数据插入到我的数据库中,并且19次所有行都将正确插入,但在这一次我将错过100行或更多行.

功能insert_batch()如下:

protected function save_sms_to_database() {
    //insert_Batch
    $datestring = "%Y-%m-%d %h:%m:%s";
    $time = time();
    $datetime = mdate($datestring, $time);

    $this->date_sent = $datetime;

    foreach ($this->destinations as $k => $v) {
        $sms_data[$k] = array(
            'campaign_id' => $this->campaign_id,
            'sender_id' => $this->from,
            'destination' => $v,
            'token' => md5(time() . 'smstoken' . rand(1, 99999999999)),
            'message' => $this->body,
            'unicode' => $this->unicode,
            'long' => $this->longsms,
            'credit_cost' => $this->eachMsgCreditCost,
            'date_sent' => $this->date_sent,
            'deleted' => 0,
            'status' => 1,
            'scheduled' => $this->scheduled,
        );
    }

    $this->ci->db->insert_batch('outgoingSMS', …
Run Code Online (Sandbox Code Playgroud)

php mysql codeigniter

7
推荐指数
1
解决办法
2万
查看次数

STR_TO_DATE无法在我的查询中使用

我在数据库中有日期字段,有varchar数据类型.现在我必须将日期与当前日期进行比较,但由于数据类型(varchar)结果不正确.

我不想在数据库中更改数据类型,所以如何在codeigniter中查询?

在我的数据库中,日期的格式为30/11/2015

我目前的查询:

    //here vd is table field(one column).

    $cd = date('d/m/Y');//current date

    $this->db->where("date_format(STR_TO_DATE(vd, '%d/%m/%Y'),'%d/%m/%Y') >",$cd); //comparing date with current date
    $query =$this->db->get('warranty');
Run Code Online (Sandbox Code Playgroud)

通过使用上面的查询,它只是比较日期而不是月份和年份.因此它将返回那些日期大于今天日期的记录.

但正确的结果不会来......

php mysql codeigniter

7
推荐指数
1
解决办法
2000
查看次数