两部分问题:
在我的CodeIgniter脚本中,我正在启动一个事务,然后插入一行,将insert_id()设置为php变量,使用新ID作为外键将更多行插入另一个表,然后我提交所有内容.
所以我的问题是:如果在结束事务之前一切都没有提交,如果没有插入任何内容,mysql如何能够返回最后一个插入ID?我的脚本(几乎)完美地工作,新ID在后续查询中使用.
(我说"差不多"因为,使用PDO mysql驱动程序,有时第一个应该返回insert_id()的插入是重复的 - 它被插入两次.任何想法为什么会这样?这与获取最后一个相关ID?如果使用mysqli或mysql驱动程序,它永远不会发生.)
我首先编写没有事务的脚本,所以我有代码检查一路上的mysql错误,例如:
if(!$this->db->insert($table, $data)) {
//log message here
}
Run Code Online (Sandbox Code Playgroud)
一旦我将所有mysql代码包装在事务中,这对mysql进程有何影响?它不会导致任何明显的错误(希望与上述问题无关),但它应该被删除吗?
谢谢.
我正在测试无法通过随机IP尝试连接来访问mysql服务器的场景.我将PDO的选项设置为在使用一秒后超时PDO::ATTR_TIMEOUT => 1.但是,抛出异常仍需要30秒.我猜这个超时只适用于实际的mysql连接时间,而不适用于运行mysql的服务器.
我需要更改什么PHP选项来超时连接到mysql服务器?
我已经成为PHP/MySQL开发人员多年了,但不幸的是,到目前为止,它只与小型项目合作过.我现在开始一个非常复杂的新网站,我开始对工作流程感到困惑.我不确定哪个部分首先要照顾,因为它们都是相当交织在一起的.
我很想知道你们中的一些人如何管理新网站的工作流程.我是独立工作的,所以如果没有多个开发人员参与,它会更容易解释.此外,我将使用CodeIgniter框架,因此让工作流程涉及MVC模型会很棒,这实际上应该使工作流程更容易.
经过一番搜索,我发现了这个有用的图表: 
但是,我不太清楚每个类别的内容.这是迄今为止我所理解的一般概述.当我错了或有更好的选择时,请随时纠正我.
确保您有明确的项目目标:您提供什么,为谁?它对别人有什么帮助?等等
列出将在站点上的所有页面和子页面.
浏览整个站点地图,并对每个页面进行粗略草图.(你有多详细?)你可以使用铅笔和纸,或Axure或Mockingbird等程序.
工作流程图中的下一个主要类别是内容,但我不确定这涉及到什么.这是网站上的所有文字吗?数据库结构?别的什么?
网站的实际设计/模板.不过,这真的是这个地方吗?我认为编码和功能更重要,并在此之后进行设计.
这一步似乎无所不包,我认为它需要被打破.首先是数据库结构(或者是在线框之后的内容中完成的吗?)我是否为站点地图中的每个页面的所有函数制作了大纲?我是否只是创建了所有必要的控制器,并对我将要放置的功能和位置进行评论?模型是否遵循控制器概述,反之亦然?我什么时候开始填写所有控制器和型号?
需要进行持续测试以确保您的代码正常运行.
这会包含MVC框架中的视图文件吗?换句话说,控制器和模型提供的所有数据?
确保一切都适用于所有浏览器.在这里和那里进行调整和更改.全力以赴的众多"假设"案例.
网站上线.
以上是我所理解的开发复杂网站步骤的有组织流程图,但我的理解可以大大改进.应该改变什么?我可以使用所有可能的建议.谢谢.
编辑:这里有人提到"敏捷开发" - 从我到目前为止所读到的,它实际上并没有一个结构.如我错了请纠正我.正如我对这个答案所评论的那样,是否真的有可能以这种方式为复杂的网站开发,例如亚马逊或Ebay?根据我不知情的意见,工作流程应该有一个明确的计划,否则项目就没有重点.
最终编辑:虽然这个问题已经结束,但我想为稍后可能会发现这些问题的人添加一些信息.我发现以下工作流程非常有用:http://www.webassist.com/free-downloads/tutorials-and-training/web-dev-workflow.php.一般工作流程的PDF:http://assets.webassist.com/how-tos/Short-Dev-Checklist.pdf.当然也可以使用敏捷开发,但对于那些不知道从哪里开始的人来说,这可能是一个很好的起点.我可以在这里添加其他工作流程和示例.
我不记得这个功能何时停止工作,但我总是让Sublime Text正确地进行自动缩进.例如,如果我键入<div>然后按Enter,则插入符将自动在下一行上创建一个选项卡.类似地,当我关闭标签时,它们会自动取消缩进一个标签(例如,当按下alt+ .以关闭标签时).
这个功能似乎已经消失了,至少在ST3中,我找不到任何方法来取回它.有人有主意吗?
编辑:添加PHP自动缩进功能可能很有用,例如在括号之间进行缩进.
官方php7 docker镜像有以下示例:
FROM php:7.0-fpm
RUN apt-get update && apt-get install -y libmemcached-dev \
&& pecl install memcached \
&& docker-php-ext-enable memcached
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用FROM php:7.0-fpm-alpine:
RUN apk add --update --no-cache libmemcached-dev
RUN pecl install memcached && docker-php-ext-enable memcached
Run Code Online (Sandbox Code Playgroud)
PECL给出了这个错误:
pecl/memcached需要PHP(版本> = 5.2.0,版本<= 6.0.0,排除版本:6.0.0),安装版本为7.0.13
如何在alpine上安装memcached php扩展?
这是我一直想知道的事情.当使用本机PHP函数而不是PHP循环等效时,性能总是更好吗?为什么或者为什么不?
以下两个例子来说明这个问题:
foreach遍历整个数组的常规PHP 循环,直到找到用户ID,或者b)array_reverse()在数组上做一个并执行相同的foreach循环,直到找到id(如果它存在,它将结束这个循环更快).哪个更快?我的直觉告诉我,第一个选项是更快,因为它做一个循环,而第二个选项是慢,因为在幕后,array_reverse()是还做某种类型的循环(C语言)的,因此需要两个循环的操作.
foreach循环来查找id的特定消息会比将messageid设置为元素的关键并且做的更慢isset(array[messageid]) && array[messageid]吗?编辑:只是为了澄清,我知道第一个例子可以使用array_search(),因为这是一个非常简单的例子.主要的问题不是哪一个更快(因为基准可以让我很容易地知道),但为什么,如同在幕后发生的事情一样?
我想只在命令行中给出一个标志时才运行一个特定的任务.例如,我想使用以下命令运行ansible-playbook命令:--extra-vars "composer-install=true".我会以某种方式需要一个检查composer-install变量是否已设置的任务,如果设置并且等于true,则运行运行的给定任务composer install.我不太确定如何做最后一部分.
如果我正在开发一个功能分支,我想知道这个分支在master分支的前面或后面有多少次提交.我似乎无法找到执行此操作的命令.
控制台记录某些对象,如对象this.refs或window导致TypeError: cyclic object value终端中的错误.
我的代码非常基本:我正在尝试更改网页上的html(在其中放置反应组件).
Main.js:
var pageMod = require("sdk/page-mod");
var self = require("sdk/self");
var { MatchPattern } = require("sdk/util/match-pattern");
// Create a page mod
// It will run a script whenever a ".org" URL is loaded
// The script replaces the page contents with a message
pageMod.PageMod({
include: /.*wikipedia.org\/wiki\/.*/,
contentScriptFile: [
self.data.url("react-with-addons.js"),
self.data.url("testing.js"),
],
contentScriptWhen: "ready",
// contentStyleFile: self.data.url("style.css"),
});
Run Code Online (Sandbox Code Playgroud)
testing.js:
var AppContainer = React.createClass({displayName: "AppContainer",
componentDidMount: function() {
console.log(this.refs.myRef);
console.log(window);
},
render: …Run Code Online (Sandbox Code Playgroud) 我想通过键入位置在项目导航中找到一个文件夹,就像使用"导航到文件"快捷方式时一样.我怎么做?我目前必须滚动并单击每个文件夹才能到达我想要的位置.
php ×4
mysql ×2
pdo ×2
ansible ×1
codeigniter ×1
connection ×1
docker ×1
dockerfile ×1
foreach ×1
git ×1
html ×1
indentation ×1
loops ×1
memcached ×1
navigation ×1
pecl ×1
performance ×1
phpstorm ×1
reactjs ×1
sublimetext2 ×1
sublimetext3 ×1
tags ×1
transactions ×1
workflow ×1