我们有一个很大的CakePHP(目前是2.4.7)SAAS-app.它已经非常成熟,直到上周我们才对CakePHPs-core提供的功能有任何实际问题.
上周末我们遇到了一个非常惊人的情况,我们的应用程序变得非常缓慢和错误.我们查看了所有类型的服务器监控,发现在过去几个小时内i/o统计数据暴涨.经过一番调查后,我们将问题分离到了Cake的' cake_core_method_cache '文件中.平均每天,此文件的大小为200 kb.上周末,它达到了约40万桶.
部署例程的一部分是从app/tmp/cache和app/tmp/persistent文件夹中删除所有缓存文件.因为我们经常部署(每天几次),所以缓存会经常被清除.不幸的是,上周的假期暂停了我们的部署,看起来这是核心/缓存功能的问题.
所以,我的两个问题是:
a)有谁知道,为什么cake_core_method_cache会随着时间的推移变大?
b)有没有其他可能解决这个问题,以便不断删除这个文件?
我正在尝试使用Symfony2,Doctrine和MongoDB构建一组安全的测试.
我需要做的是在测试开始时加载很多灯具,并在它结束时卸载它们.我想过用一个交易来做,但是...我找不到有关如何用Doctrine和Mongo做的文档!
我在Doctrine文档中找到了关于如何与ORM进行交易的良好文档,但没有关于ODM.
于是我带着一看的源代码Connection.php的原则,蒙戈使用过类,我还没有发现beginTransaction,commit并且rollback这些方法DBAL版本使用.
我一无所知,然后我问自己"甚至可以在MongoDB中回滚?",如果在MongoDB常见问题解答中找到的答案是:
MongoDB不使用传统锁定或复杂事务与回滚
:(所以我想这就是为什么beginTransactionODM中没有或没有任何东西......
但我的问题仍然存在:如何为我的测试实现一种回滚?
我现在唯一的想法是手动获取我加载的文档的所有ID,然后删除它们tearDown().但是,嗯......它有点糟透了,不是吗?
其他想法??
编辑: 在我对这个问题的第一次评论之后,关于我想在测试和开发中拥有相同数据库的事实,我想:为什么不使用单独的测试数据库,在测试开始时开发数据库被复制,那可以轻松掉线?
这可能是一个更好的主意吗?它实际上对我来说更容易,更安全.你们有什么感想?
谢谢 :)
如何为以下循环的每次迭代回显一些内容:
<?
for($i=0;$i<5;$i++) {
// some (slow) logic
echo $i;
}
?>
Run Code Online (Sandbox Code Playgroud)
我希望在运行时看到$i输出的值,但是这不输出任何内容,然后0 1 2 3 4执行脚本.
我在某些span标签上创建了一堆内联tinyMCE编辑器,就像这样
<span class="editor">text here</span>
<script type="text/javascript">
tinymce.init({
selector: ".editor",
inline: true,
object_resizing: false,
toolbar: "undo redo",
menubar: false,
forced_root_block: false,
});
</script>
Run Code Online (Sandbox Code Playgroud)
但我想隐藏输入它自动生成名为mce_ [number]以外的名称,以便它匹配cakePHP框架所期望的内容.我尝试用javascript更改这些字段的name属性.有时它可以工作,有时候这些输入字段在提交表单时不会有任何数据.有帮助吗?
下载CakePHP时,会出现以下文件:
.editorconfig,.travis.yml,build.properties和build.xml
我以前从未真正编辑过这些文件或将它们用于我的应用程序,但我从未删除它们.这些文件重要吗?或者我可以删除它们吗?
我正在使用CakePHP版本2.4.2
这是我在index.php中的代码
include ($_GET['page']);
Run Code Online (Sandbox Code Playgroud)
实际上我需要包含来自url的页面
"?page=go.php"
Run Code Online (Sandbox Code Playgroud)
另一方面我无法过滤
"?page=example.com"
Run Code Online (Sandbox Code Playgroud)
至于某些情况,我也需要包括这个值.但这是一个远程文件包含(RFI)漏洞.如何防止来自我网站的RFI攻击?我正在做类似的事情
$filename = $_GET['page'];
if (file_exists($filename)) {
{
include ($_GET['page']);
}
Run Code Online (Sandbox Code Playgroud)
但它只过滤
"?page=go.php"
Run Code Online (Sandbox Code Playgroud)
这个短片的页面.我很生气
"?page=example.com"
Run Code Online (Sandbox Code Playgroud)
这个短片的页面.
我正在使用WAMP Server,并尝试上传文件大小为131 MB的sql文件.
当前限制在phpMyAdmin上传屏幕上显示128MiB.
但我的php.ini配置是:
upload_max_filesize = 2M
post_max_size = 2M
Run Code Online (Sandbox Code Playgroud)
这对我来说有点尴尬.但后来,我把它们改为:
upload_max_filesize = 256M
post_max_size = 256M
Run Code Online (Sandbox Code Playgroud)
它仍然显示(最大:128MiB)限制.
我正在编辑的文件位于"C:\ wamp\bin\apache\apache2.4.9\bin \"目录中,我在更改这些值后重新启动了服务器.
我通过在cmd中键入mysql命令找到了解决此问题的方法.但我的问题是,为什么它不反映我在这里的变化?
我的设置是在Windows上工作,但我最近切换到Ubuntu 12.04 LTS,现在它将无法连接.当我加载一个我需要与SQL Server通信的页面时,我收到此错误:
由于缺少PHP扩展或未满足的依赖项,无法使用数据库驱动程序Cake\Database\Driver\Sqlserver
很明显CakePHP找不到SQL Server PDO驱动程序.
我找到了许多旧的教程来帮助我,但我最近才拿到了(我希望能够在我的CakePHP网站上使用PDO).这是我遵循的教程.
使用终端,我可以使用此命令访问数据库
sqlcmd -S my.sql.server.com -U username
Run Code Online (Sandbox Code Playgroud)
使用CakePHP 3.x从我的ubuntu安装连接到这个sql server数据库需要做什么?
在我的项目中,我删除了挂在 git 中的所有旧分支,但有些分支我无法删除:
$ git push origin :0.2.0.0
error: dst refspec 0.2.0.0 matches more than one.
error: failed to push some refs to 'ssh://git@<repo>.git'
Run Code Online (Sandbox Code Playgroud)
我的 git repos 很少,而且我有一些可能是错误创建的旧分支。这些分支与创建的标签同名,我无法删除这些分支。
有没有办法删除这些分支?似乎您可以在任何地方找到的唯一命令是git push origin :<branch>或git push -d origin <branch>并且这些命令中的分支和标签之间没有区别。
我不知道这些分支是如何创建的,但我想摆脱它们。
我的问题是当我从用户表中获取用户数据时,用户表的所有字段都从用户表中获取..但我不想包含密码和电子邮件地址,所以有没有办法只获取除密码和电子邮件地址?
问候.
php ×6
cakephp ×5
cakephp-2.4 ×2
cakephp-2.0 ×1
cakephp-3.0 ×1
doctrine-orm ×1
git ×1
mongodb ×1
pdo ×1
phpmyadmin ×1
sql-server ×1
symfony ×1
tdd ×1
tinymce ×1
ubuntu ×1