我正在准备一个网站,它会向注册用户发送电子邮件通知.根据我的经验,我知道,发送电子邮件对PHP来说是一个痛苦的过程,特别是当我们谈论成千上万时.我的一个网站不时发送电子邮件给1000-1500人.PHP需要大约5分钟来完成,所以我们在服务器负载最低的情况下一夜之间运行它.我正在使用mail()没有任何SMTP的本机功能.这在专用服务器上运行良好,但我不是这个解决方案的忠实粉丝.
我希望能够随时发送类似的金额,而不会让服务器崩溃(并将其列入黑名单).
我读过,理想的解决方案是每隔几分钟从Cron触发的脚本中批量发送电子邮件(比如20).在我看来,这似乎是一个非常合理的想法,但是...如果我无法访问Cron(并非所有托管服务提供商都可以访问它),并且网站不够流行,无法在页面上触发脚本加载?
我坚持使用我的服务器来进行邮件而不是任何外部解决方案.
PS.我找到了这样的解决方案:http://www.mywebcron.com/但是这有什么用的吗?
编辑
只是添加:
嘿,我是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)
但这是一个错误.谢谢!
任何人都知道一个脚本或已经构建的功能,可以帮助我使用现有的降价格式内容创建一个快速摘录?
我正在寻找格式化结果,如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(分成两半),我担心它看起来很讨厌.
思考?我看了一下,但乍一看还没有找到任何剥离降价的东西.
我有以下观点,但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) 我在/ 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 :: …
目前我使用CodeIgniter进行常规查询,即:
$sql = "
SELECT *
FROM my_table
WHERE item_id > 1
";
$q = $this->db->query($sql);
Run Code Online (Sandbox Code Playgroud)
我已经开始研究ActiveRecord,它确实看起来不错,并且无论使用哪个数据库驱动程序都具有构建查询的优势 - 但是,我通常严格使用每个项目的单个数据库类型,所以这不是真正的对我有利.
我发现在我看来,常规查询(正如我在我的示例中所示)更易读,更容易维护,因此我目前正在考虑保持常规查询.
除了上面提到的原因,我应该选择哪个,以及原因是什么?
谢谢
好吧,我有一个表,由一些开源软件输出,但它不会以实际的表格格式输出,例如
<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) 我正在使用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.但它没有用. …
我正在使用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) 我在数据库中有日期字段,有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)
通过使用上面的查询,它只是比较日期而不是月份和年份.因此它将返回那些日期大于今天日期的记录.
但正确的结果不会来......