经常在启动Drupal(6.x)网站之后,我让人们开始注册并输入自己的内容.只要需要升级,生产数据库就会复制到开发人员,然后在开发人员上进行开发,然后将其推入登台以供客户批准. 当网站最终准备好上线时,就会出现问题. Production Server具有最新的用户输入的内容,开发服务和登台具有最新功能.只需在生产中覆盖数据库就无法使用.我通常要做的是写下为开发人员所做的事情,而不是按照生产中的实现进行执行的步骤.随着系统的增长,生产中的一个错误可能会导致业务损失.我无法关闭网站几个小时.我不能说在给定时间有多少人在使用该网站,即使是不可能等待没有人在网站上进行升级的时间. 有人有好主意吗? 预先感谢. 解决方案 您需要研究两个概念:第一个是" exportables "通常是导出给定模块的所有配置的一种方法.第二个是" 功能给定的版本控制,更新,部署,回滚等的更改 为了澄清,许多模块实现了自己的"导出物"方法,我链接到上面的是导出物模块.这是一个更广泛的
以下是关于 synchronization 的编程技术问答
我大多熟悉Java,C和C ++,其中有一些方法可以控制一个线程在任何给定时间都访问资源.现在,我正在寻找类似的东西,但在php 5.x中. 用一个示例来提出我的问题: 我有一个仅存储一个数字的ASCII文件,即页面加载计数器的值.在应用程序部署时,文件将简单地持有0.对于每个访问,该值将被一个递增.目标是跟踪页面负载. 当许多用户同时访问包含计数器的页面时,问题就会出现.当线程A读取当前值时,假设它是11,我们称之为B的另一个线程读取值,仍然为11.然后,第一个线程A递增读取值并将12个写入文件中并将其关闭.然后,第二个线程B递增11个读取值,即11,将其写入文件中.值12存储在文件中,当时它应该是13. 在另一种编程语言中,我本可以使用互斥品解决此问题.我知道有一些静音,共享内存和其他拟合性作为模块的一部分.但是我想要一个解决方案,该解决方案可用于其中的"大多数服务器".平台独立.安装在大多数廉价的网络主机上.有很好的解决方案吗?如果没有,如果使用数据库不是选
手动保持同步的生产和开发数据库确实是一种痛苦. 是否有任何工具可以使两个数据库保持同步?像惊人的 laravel框架的迁移 我正在使用MySQL和PHP.我在这里和那里进行了搜索,但无法找到合适的工具. 解决方案 您绝对应该看看 phinx .这是我使用MySQL和PHP执行的复杂数据库迁移步骤的示例:/p> 其他解决方案 如果我没有错,则需要一个工具来创建数据库版本控制以跟踪模式更改.您可以使用Cygnite迁移命令.使用简单并使您的工作更轻松. 供您参考 - 迁移和播种视频教程 数据库迁移工具 其他解决方案 查看原理图,它旨在使用YAML或JSON中的模式文件,并且可以在全球安装: 它旨在使用您的VC订立,因此您的数据库版本与您的项目提交一起存储.
我有一个带有PHP文件和其他的网站.我想在我的网站本地副本和服务器上的网站之间进行一键同步.如果有命令行实用程序或插件来蚀了PDT,那将是不错的选择. 解决方案 我找到了Winscp.它是FTP,免费和开源: http://winscp.net/eng/eng/eng/docs/start ,它可以从命令行与文件的比较(以同步) 进行比较 其他解决方案 我会推荐 lftp .这是一个复杂的脚本命令行FTP客户端. lftp has builtin mirror which can download or update a whole directory tree. There is also reverse mirror (mirror -R) which uploads or updates a directory tree on server. Mirror can also synchronize directories between tw
我需要使用PHP将数据从一个MySQL数据库复制到另一个数据库. 我可以构建所有值的数组,以进入其他数据库,但首先我要确保数据库在插入之前具有正确的字段. 例如,说我将要将数据从tablea复制到tableb. 我可以设置TableB看起来像tablea,但是将来我可能会在tablea中添加列,而忘记将它们添加到表格中,然后我的PHP脚本将尝试将数据插入到表格中不存在的列中它将失败. 所以我要做的是将tablea与TableB进行比较,而Tablea的任何列都没有将它们添加到TableB. 谁能告诉我该怎么做? 解决方案 感谢大家,根据您的所有帮助,我能够编写一个PHP类,该类别从表A到表B复制任何列,如果它们还不存在: class MatchTable { var $_table_one_name; var $_table_two_name; var $_table_one_db_user; var $_t
这是场景. 2个在两个单独位置的Web服务器,具有两个带有相同表的MySQL数据库.表格中的数据也有望实时相同. 这是问题所在.如果两个位置的用户同时将新记录输入相同的表,则如下两个第一表中所示,每个表中的第三个记录已由不同的人同时输入.表中的数据不再相同.如下第三个表中所示,无论更新的何处,哪种方法是保持数据实时相同的最佳方法?这样,在下面的插图中而不是在每个表中以3行结束,而是在双向上复制新记录,并将它们插入两个表中以再次创建2个相同的表,并使用4列使用4列? ? Server A in Location A ============== Table Names | ID| NAME | |-----------| | 1 | Tom | | 2 | Scott | |-----------| | 3 | John | |-----------| Server B in Location B ============== Table Names | ID|
我正在使用PHP和MySQL开发Web应用程序.该应用程序在三个不同的位置运行. 在互联网上 总部 分支机构 应用程序在总部和分支机构的本地服务器上运行.互联网连接并非每次都可以使用.客户在这三个位置下订单.我的问题是,我想在这三个数据库中同步数据,并将这三个数据库保持最新.有什么方法可以做到吗? 解决方案 我正在使用Symmetricds同步数据库.它能够在节点(服务器/数据库)之间同步或复制数据,只能推动或拉出您定义的数据.它是基于Java的软件,它具有陡峭的学习曲线,但确实可以完成工作. 可以设置 Symmetricds以将更改从一个节点推向其他两个节点,从而确保所有三个节点都包含相同的数据.您需要确保主键是唯一的键,而不是数据库分配的自动增量值,因为这很可能是您要同步的三个不同数据库中的问题. 该软件在数据库上安装触发器,并在执行插入,更新或删除(和其他)操作时捕获更改.然后在其他节点上调用这些数据更改.该软件需要在每个位置上运行,但不需要始终可
用户模型: public function positions() { return $this->belongsToMany('App\Position')->withPivot('company_id')->withTimestamps(); } 位置模型: public function users() { return $this->belongsToMany('App\User')->withPivot('company_id')->withTimestamps(); } 在表单提交中,我有两个数组: $allPositionIds array:3 [ 0 => 98 1 => 99 2 => 100 ] $allCompanyIds array:3 [ 0 => 129 1 => 130 2 => 131 ] 使用 $user->positions()->sync($allPositionIds); 与用户和相应位置ID同步位
官方的Laravel文档在sync()函数上具有此内容: $user->roles()->sync( array( 1, 2, 3 ) ); 您也可以将其他枢轴表值与给定的ID相关联: $user->roles()->sync( array( 1 => array( 'expires' => true ) ) ); 在后一个示例中,只添加了一个枢轴行.我不明白的是,如果有多个行要同步,如何将其他枢轴表记录关联? 解决方案 现在有一个->syncWithPivotValues($ids, $pivotValues)方法,如果要为所有同步项目设置相同的枢轴值. 示例来自doc : $user->roles()->syncWithPivotValues([1, 2, 3], ['active' => true]); 其他解决方案 为了sync多个模型以及自定义枢轴数据,您需要以下方式: $user->roles()->sync([
我正在寻找一种解决方案,该解决方案允许浏览器的局部存储不再是本地的,以便人们可以在多个设备上访问其数据.传统的方式是在服务器上运行数据库并让人们登录;但是我试图避免这样做.我希望服务器端重量轻 - 也许如果可能的话,甚至可以完全静态 - 并且没有安全存储密码的工作,担心数据保护等. 许多浏览器都有某种登录名 - Google帐户,Firefox帐户等 - 将用户的浏览器联系在一起.因此,理想的解决方案是将数据存储在LocalStorage中,但使用该帐户跨设备同步.似乎有chrome.storage之类的接口似乎可用于打包应用,但不能用于普通的网页. 目前的技术是可能的吗? 解决方案 我会考虑使用诸如Firebase Web之类的工具,它将为您节省大量的开发时间,并且将所有客户同步到数据. https://firebase.google.com/docs/docs/docs/docs/storage/storage/web/storage/web/storage
prevayler保证(通过其交易)都同步了所有写作.但是阅读呢? 如果不使用明确同步(在用户代码)? 的 如果读取业务对象为: ,它们是否可能 // get the 3rd account Accont account = (Bank)prevayler.prevalentSystem().getAccounts().get(2); ? 如果是这样,哪些同步策略适合用户代码? (考虑一个业务对象A包含业务对象的集合BS), 例如,使用同步集合(A内部的BS),例如 来自java.util.concurrent软件包? 同步集合读取外部交易与 集合在交易内部写作,例如使用 "同步(集合)"围绕读取和写入的代码? 解决方案 推荐方法是使用jmatch查询和prevayler.execute(QUERY).直接或使用子类. 返回的结果必须是原始值或不变的对象.如果您打算返回可变的对象,则应将jmatch查询进行这些深入副本.这样,您就可以获
SQL Server并不是我的强项,在经过基本创建表时,我开始迷路,从表等中选择. 我正在尝试使用Microsoft SQLCompact 3.5数据库来设置数据库同步方案,该数据库通过代理和SQL 2008 R2数据库进行同步.它是通过Microsoft Sync Framework 2.1进行同步的. 当用户帐户是数据库的db_owner时,我可以通过代理设置所有设置并正常工作. 当然,现在需要锁定这一点 - 所以我一直在尝试将权限限制为同步所需的最低限度. 根据Microsoft文章,我需要做以下... 使用最少许可的原则.不要授予执行特定任务所需的权限更多.例如,请勿将涉及仅下载同步的服务器数据库表授予插入权限.同步操作需要以下权限: 在同步框架用来读写元数据和基础表的所有存储过程上执行权限. 选择,插入,更新和删除元数据表以及将在同步会话期间更新的任何基本表的权限. 当您提供使用SQLSyncProvider的SQL Server
我一直在进行交易内存及其对系统编程(数据库,操作系统,服务器等)的生存能力.我自己采用交易的经验,以及看到很少有社区在实际代码中使用交易的经验提出了一个问题:是什么说服您,开发人员编写生产代码,在您的工作中使用交易记忆? 这是一般采用的吗?高速?提高可靠性?多少? 对于那些尚未看过它们的人,内存交易的作用类似于数据库交易:操作(显然)并行进行,如果两个交易之间存在冲突(例如,它们都编写相同的值),则一个或两个交易的其中将被回滚并重新启动. 交易记忆有一些好处: 可靠性完全免于僵局(例如,错误的排序锁定). 性能锁定较低时的速度更高. 可编程性精细元素并发控制,没有许多同步对象. 甚至假设TM 的正确,完整且快速实现,与锁相比,该原始的弊端. . 由于交易可能会执行多次,因此除了经验实验外,很难预测性能. . 我们可以重现性能错误吗? 在正确的实施之间存在一些不同的政策决策,例如结束另一笔交易的交易会发生什么?我们现在提交还是等待?
我需要总和存储在数组中的100000值,但是有条件. 有没有办法在CUDA中产生快速结果? 任何人都可以发布一个小型代码吗? 解决方案 我认为,要执行有条件的减少,您可以将条件直接引入乘以0(false)或1(true)的乘法到附加.换句话说,假设您要遇到的条件是加勒图小于10.f.在这种情况下,在__global__ void reduce0(int *g_idata, int *g_odata) { extern __shared__ int sdata[]; // each thread loads one element from global to shared mem unsigned int tid = threadIdx.x; unsigned int i = blockIdx.x*blockDim.x + threadIdx.x; sdata[tid] = g_idata[i]*(g_data[i]
我是Linux和Linux线程的新手.我花了一些时间谷歌搜索,以尝试了解可用于线程同步的所有功能之间的差异.我还有一些问题. 我已经找到了所有这些不同类型的同步,每种都具有许多用于锁定,解锁,测试锁的功能. GCC原子操作 futexes 静音 Spinlocks seqlocks rculocks 条件 信号量 我的当前(但可能有缺陷)的理解是: 信号量很宽,涉及文件系统(实际上我想),并且可能是最慢的. futexes可能是静音,单锁,seqlocks和rculocks使用的基本锁定机制. Futexes可能比基于它们的锁定机制要快. 旋转锁不会阻塞,因此避免上下文swtiches.但是,他们以上下文切换为代价,而牺牲了CPU上的所有周期,直到锁定锁定为止(旋转).出于明显的原因,它们仅应在多处理器系统上使用.切勿在锁中睡觉. 如果作者更改了工作所基于的数据,则seq锁只是告诉您完成工作时.在这种情况下,您必须回去重复工作.
我已经阅读了许多有关螺纹的材料,以及所涉及的所有同步机制.我也了解不正确进行的危险. 我刚刚看过 this PDC 2009的视频有关并行性和同意再次提到"锁是一个昂贵的操作".现在,我在各种文本,书籍中都遇到了这样的短语,而且我也听说过该领域的专家也这样说. 我想知道,获取锁(互斥或信号量)到底是什么昂贵的?它是否导致A LOCK#指令在汇编器级别发射? 获取锁需要内核调用的事实? 为什么锁被认为是昂贵的操作? "昂贵"是一个相对相对的术语,因此,如果我们将创建新线程(需要设置线程堆栈等)进行比较,那么真正获得锁的昂贵? 封面下方发生了什么? 我的猜测是,它不可能这么昂贵,因为我敢肯定(例如)运行Windows,必须一直使用数百个锁/同步机制. 任何人都可以详细说明吗? 注意:我只是好奇,我知道线程是如何工作的,而且我也不想做一些愚蠢的优化. 解决方案 它导致锁定#指令在汇编器级别发射吗? 不,因为它并不总是这样做.
我在Java中就synchronized街区的性能遇到了一个小争议.这是一个理论上的问题,不影响现实生活中的应用. 考虑使用锁和同步部分的单线程应用程序.此代码是否比同步段同步的代码慢?如果是这样,为什么?我们不讨论并发,因为它只是单个线程应用程序 更新 找到有趣的基准标准对其进行测试.但这是从2001年开始的.在最新版本的JDK 中,情况可能发生了巨大变化. 解决方案 热点中有3种锁定类型 fat :JVM依靠OS静音来获取锁. Thin :JVM使用CAS算法. 有偏见:CAS在某些架构上是相当昂贵的操作.有偏置锁定 - 当仅在对象上工作时,是针对方案进行优化的特殊锁定类型. 默认情况下,JVM使用 thin 锁定.稍后,如果JVM确定没有争议的薄锁将转换为偏见锁定.更改锁类型的操作相当昂贵,因此JVM不会立即应用此优化.有特殊的JVM选项 - xx:biasedlockingstartupdelay = delay ,它告诉JVM应应用于这种
我很想使用 browsersync 进行开发.但是,页面加载(不仅在更改后重新加载)非常慢. 我使用proxy模式.无需浏览的页面浏览页面即应该很快. 我安装browsersync时可能是以下错误: > ws@0.4.31 install /usr/local/lib/node_modules/browser-sync/node_modules/socket.io/node_modules/engine.io/node_modules/ws > (node-gyp rebuild 2> builderror.log) || (exit 0) CXX(target) Release/obj.target/bufferutil/src/bufferutil.o SOLINK_MODULE(target) Release/bufferutil.node SOLINK_MODULE(target) Release/bufferutil.node: Finished CXX(t