问候,
我正在编写一个 CI Web 应用程序,它实现标准文件缓存功能,如下所示:
$this->output->cache(n);
Run Code Online (Sandbox Code Playgroud)
我正在使用段和查询字符串参数的组合,因此似乎遇到了问题。我在用例和输出类代码中看到的是,缓存仅基于段。因此,http://www.example.com/segment/?q=foo和http://www.example.com/segment/?q=bar被视为相同的请求。
有没有人对如何编辑 url_helper、输出类或 CI 基类有任何见解或建议,以便上面的示例将example.com/segment/?q=foo和example.com/segment/?q=bar视为单独的、唯一的请求并将响应单独存储在单独的文件中?
我有一个旧系统和一个正在开发的新系统:
在旧系统中,我使用 crontab 和 swiftmailer 发送新闻通讯。我编写了一个 PHP 脚本,它从数据库中读取邮件列表,并使用 swiftmailer+smtp 将电子邮件发送到整个列表,每组电子邮件之间有延迟,以确保我不会使服务器超载(swift mailer 在 Swift_Plugins_AntiFloodPlugin 下有此脚本) )。
我还编写了另一个脚本,该脚本将扫描我发送的地址以查找传入电子邮件,查找失败通知等,并匹配地址以清除数据库中不活动的电子邮件(即,如果您将电子邮件发送到不活动的地址)不存在,您收到一封带有错误消息的邮件,我从内容中提取了地址并将其从数据库中删除)。
这种方法每天处理超过 40K 封电子邮件。就像魅力一样。
在我正在编写的新系统中,我正在使用代码点火器。code igniter 的内置邮件功能似乎工作正常,只缺少一件事:是否可以在发送之间添加延迟?
我知道将 swiftMailer 库添加到我的 CI 项目中很简单,但在我这样做之前,可以使用 CI 邮件函数来完成此操作吗?独自的?在这种情况下添加 swift mailer 还有其他优点吗?
我知道很多人会建议使用为批量电子邮件构建的东西,但 PHP CLI 就像这种情况下的任何其他编程语言一样(我知道 mailman、majordomo 和 mailchip 等服务。我可以在 php 中使用多线程处理sysdaemons 和 mod_fork 等需要时,但这与问题无关)。
编辑:
解决了
尽管我已经添加了 swift 邮件程序(这花了几分钟), @JaredFarish 建议的Sparks似乎是解决方案,因为它是为 CI 设计的。
我需要使用 CodeIgniter 在文件上运行 cron 作业,但 CodeIgniter 不允许我直接运行文件。IE
我可以在浏览器中运行控制器:
api.example.com/index.php/cron
Run Code Online (Sandbox Code Playgroud)
我的主机只允许我运行 PHP 文件,而无法通过命令行执行此操作,因为它不允许我运行 wget 或 curl。
如何让 CodeIgniter 运行如下文件:
api.example.com/index.php/application/controller/cron.php
Run Code Online (Sandbox Code Playgroud)
我可以用我的主机调用该文件。
更新
我以为我会更新所有对我有用的选项,但我最终更改了托管并执行了以下操作。
http://devsforrest.com/116/setup-a-cronjob-to-run-every-5-month-on-media-temple
我的服务器子文件夹中的 Codeigniter 应用程序以及文档根目录中的 Wordpress 安装出现了一些问题。如果我隐藏index.phpCodeigniter URL 的.htaccess
/codeigniter/.htaccess
DirectoryIndex index.php
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|user_guide|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 index.php
</IfModule>
Run Code Online (Sandbox Code Playgroud)
/codeigniter并让WordPress 忽略RewriteCond %{REQUEST_URI} !^/(codeigniter).*$
/.htaccess
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_URI} !^/(codeigniter).*$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Run Code Online (Sandbox Code Playgroud)
然后导航到www.mysite.com/codeigniter/my_controller/my_function,我收到一个 404 错误,No input …
我必须具有这些架构的表:
users(id, name, email)
user_details (id, user_id, physical_address, otherinfo)
Run Code Online (Sandbox Code Playgroud)
当我尝试在第一个表上使用设置关系时,我想使用杂货杂货在一个网格中显示两个表的所有内容,如下所示: 注意:我已经减少了渲染视图的部分;
$crud = new grocery_CRUD();
$crud->set_table('users');
$crud->set_relation('id', 'user_details', '{physical_address} + {otherinfo}');
Run Code Online (Sandbox Code Playgroud)
id 字段的值以及引用的表不会出现在网格中,因此在使用主键时它似乎不起作用。
所以我决定从第二个表的内容开始,如下所示:
$crud = new grocery_CRUD();
$crud->set_table('user_details');
$crud->set_relation('user_id', 'users', '{name} + {email}');
Run Code Online (Sandbox Code Playgroud)
这是可行的,但问题是这些值出现在网格的一列中。我想知道如何将它们分成不同的列并使其在单独的输入字段中可编辑。
我正在使用Omnipay-stripe,并尝试使用以下代码创建客户:
$gateway = Omnipay::create('Stripe');
$gateway->setApiKey('sk_test_....');
$token = $this->input->post('stripeToken'); // Code Igniter for $_POST['stripeToken']
$customer = $gateway->createCard(array(
"source" => $token,
"description" => "Example Customer")
);
echo 'Customer: ';
echo '<pre>';
print_r($customer);
echo '</pre>';
Run Code Online (Sandbox Code Playgroud)
我没有任何运气。我检查了CreateCardRequest,它显示“这实际上并没有创建一张卡,而是创建了一个客户。”
我从 API 解析的请求 POST 正文是:
key: "pk_test_...."
payment_user_agent: "stripe.js/6a67cf0"
card:
number: "************4242"
cvc: "***"
exp_month: "12"
exp_year: "2017"
Run Code Online (Sandbox Code Playgroud)
我的响应正文是:
id: tok_15v8exD17chNNDaoGMbDebAL
livemode: false
created: 1429889047
used: false
object: "token"
type: "card"
card:
id: card_15v8exD17chNNDao92nWH2rP
object: "card"
last4: "4242"
brand: "Visa"
funding: "credit" …Run Code Online (Sandbox Code Playgroud) 我正在使用 Codeigniter 和 Bootstrap。这是我的视图代码:
<?php echo form_open('con_login/loginUser'); ?>
<div class="bs-example">
<div class="col-md-2">
<label class="sr-only" for="username">Username</label>
<input type="text" class="form-control" name="username" placeholder="Username" value="">
</div>
<div class="col-md-2">
<label class="sr-only" for="password">Password</label>
<input type="password" class="form-control" name="password" placeholder="Password" value="">
</div>
<button type="submit" class="btn btn-default" name="login" value="login">Sign in</button>
</div>
<?php echo form_close(); ?>
Run Code Online (Sandbox Code Playgroud)
控制器中被调用函数的代码是:
public function loginUser() {
$username = $this->mod_login->getUsername();
$inUser = $this->input->post('username');
$inPass = $this->input->post('password');
if (in_array($inUser, $username)) {
$password = $this->mod_login->getPassword($inUser);
if ($password === $inPass) {
$this->load->view('Alt_home');
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到了错误
在此服务器上找不到请求的 URL /SEP/con_login/loginUser。 …
我正在尝试让 Instagram 用户从我的网站关注和取消关注。我正在使用 Instagram API+ codeignator 来执行此操作。在前端,我使用“关注”和“关注”按钮列出 Instagram 用户。当用户关注并单击“关注”时,它应该“取消关注”用户。当按钮显示“关注”并且用户单击它时,按钮应更改为关注并开始关注用户。我正在添加我所做的代码:
$follow_id =$_POST['id'];
$accessToken = @$this->session->userdata('instagram_accessTokeninst');
$url= 'https://api.instagram.com/v1/users/'.$follow_id.'/relationship?access_token='.$accessToken;
$data = 'action=follow';
$resultObj = json_decode(sendPostData($url,$data));
print_r($resultObj);
$responseCode = $resultObj->meta->code;
$errorMsg = $resultObj->meta->error_message;
Run Code Online (Sandbox Code Playgroud)
作为对此的回应,我收到“内部服务器错误”。这段代码适合我的要求吗?等待您的答复...
我正在尝试使用 smtp codeigniter 发送电子邮件。我正在使用的代码如下:
public function notify_marketing(){
$config = Array(
'protocol' => 'smtp',
'smtp_host' => 'ssl://smtp.googlemail.com',
'smtp_port' => 465,
'smtp_user' => 'myvalidemail@gmail.com',
'smtp_pass' => '*******',//my valid email password
'mailtype' => 'html',
'charset' => 'iso-8859-1',
'wordwrap' => TRUE
);
$this->email->initialize($config);
$this->load->library('email', $config);
$this->email->set_newline("\r\n");
$this->email->from('myvalidemail@gmail.com');
$this->email->to('validreceiptent@gmail.com');
$this->email->subject('My Subject');
$this->email->message('Hello there');
if($this->email->send())
{
$this->session->set_flashdata("success","Email sent.");
}
else
{
show_error($this->email->print_debugger());
}
}
Run Code Online (Sandbox Code Playgroud)
但是我在响应中收到以下错误。我尝试了该网站的其他解决方案,但没有成功。
<div id="exception_error">
<h1><span class="type">An Error Was Encountered [ 500 ]</span></h1>
<div class="content">
<p><p>220 smtp.googlemail.com ESMTP bv4sm16669443pbb.86 - gsmtp
<br /><pre>hello: 250-smtp.googlemail.com …Run Code Online (Sandbox Code Playgroud) 我正在使用 .htaccess 删除 CodeIgniter 项目的 index.php。我让它在本地主机上正常工作,但在我的主机上失败了。我的托管向我展示的结构是这样的:
/
-- domains
---- mydomain.com
------ public_html
-------- .htaccess
-------- (the rest of my CI site)
Run Code Online (Sandbox Code Playgroud)
在本地主机中我的 .htaccess 是这样的:
RewriteEngine on
RewriteBase /myCIfolder/
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
RewriteBase /
RewriteBase /domains/
RewriteBase /domains/mydomain.com/
RewriteBase /domains/mydomain.com/public_html/
RewriteBase /mydomain.com/
RewriteBase /mydomain.com/public_html/
RewriteBase /public_html/
Run Code Online (Sandbox Code Playgroud)
但我无法让它发挥作用。我已询问我的主机提供商,他们说 MOD_REWRITE 已启用。
任何想法都会受到高度赞赏。
编辑1
我的索引页面(mydomain.con - 主控制器,索引功能)加载正确,但任何其他控制器都失败。
和
RewriteBase /
Run Code Online (Sandbox Code Playgroud)
它向我显示了错误:
未指定输入文件。
任何其他 RewriteBase 显示:
内部服务器错误
服务器遇到内部错误或配置错误,无法完成您的请求。
请联系服务器管理员 webmaster@mydomain.com 并告知他们错误发生的时间以及您可能执行的任何操作导致错误。
有关此错误的更多信息可在服务器错误日志中找到。
此外,尝试使用 …
codeigniter ×10
php ×8
.htaccess ×2
apache ×1
caching ×1
datatable ×1
email ×1
grocery-crud ×1
html ×1
join ×1
omnipay ×1
smtp ×1
swiftmailer ×1
wordpress ×1