我正在尝试配置Eclipse PHP格式化程序,以便php
在它们之间只有一行代码时将开始和结束标记保持在1行(如果有更多行代码,则保持默认的新行格式).
例:
<td class="main"><?php
echo drm_draw_input_field('fax') . ' ' . (drm_not_null(ENTRY_FAX_NUMBER_TEXT) ? '<span class="inputRequirement">' . ENTRY_FAX_NUMBER_TEXT . '</span>' : '');
?></td>
Run Code Online (Sandbox Code Playgroud)
应格式化为:
<td class="main"><?php echo drm_draw_input_field('fax') . ' ' . (drm_not_null(ENTRY_FAX_NUMBER_TEXT) ? '<span class="inputRequirement">' . ENTRY_FAX_NUMBER_TEXT . '</span>': ''); ?></td>
Run Code Online (Sandbox Code Playgroud)
有没有办法用Eclipse实现这一目标?还是另一个建议/格式化程序?
编辑: 似乎Eclipse没有这样的格式化选项,如下面的评论中所述.任何可以做到这一点的现有替代品?
使用PHP 7.2,each
不推荐使用.文件说:
警告此功能自PHP 7.2.0起已废弃.非常不鼓励依赖此功能.
我正在努力调整电子商务应用程序并将所有while-each
循环转换为(假设)等效foreach
.
正如您在下面看到的,我已经用等效的替换了所有的reset
&while
循环foreach
.
它工作得很好.但是,我们有一个客户在她的购物车中有很长的商品列表,试图结帐并抱怨她从服务器收到错误502.我试图重现它,发现只有她的购物车失败,加载结帐页面需要2分钟,然后加载502次.然后我开始调试我最近修改过的很多文件,试用和错误,直到我发现问题出在这个特定文件和特定功能上.每当我将第一个foreach
循环切换回while
循环时,客户可以在不到一秒的时间内加载结帐页面.切换回foreach
- 再次需要几分钟,但PHP在结束执行之前超时.
我做的是,输出执行过程中的测试foreach
VS的while
循环(var_dump $products_id
和$this->contents
例如),他们似乎都相同.我已经重写了代码以使其顺利运行并保持PHP 7.2兼容,但我仍然无法弄清楚为什么会发生这种情况.
这是完整的功能:
function get_content_type() {
$this->content_type = false;
if ( (DOWNLOAD_ENABLED == 'true') && ($this->count_contents() > 0) ) {
// reset($this->contents);
// while (list($products_id, ) = each($this->contents)) {
foreach(array_keys($this->contents) as $products_id) {
if (isset($this->contents[$products_id]['attributes'])) {
// reset($this->contents[$products_id]['attributes']);
// while (list(, $value) …
Run Code Online (Sandbox Code Playgroud) 我在Windows 10上使用WAMP,在Apache 2.4上运行PHP 7.2
当我打开OPcache时,我加载的页面在Chrome中崩溃并出现以下错误:
ERR_CONNECTION_RESET
我检查了php错误日志和Apache错误日志,但未找到任何报告的错误.我试图禁用Xdebug,仍然是相同的崩溃,并且在日志中没有错误.关闭OPcache或切换到php 7.1或更低版本可以解决问题.
我到处寻找有关如何调试导致OPcache失败的原因(以及原因)的一些信息,因为关闭它不是一个解决方案,但找不到任何有用的东西(也检查过类似的SO问题,比如这个也没有因此,我正在向专家们寻求帮助,我相信这也将有助于其他人.
谢谢.
PS注意一个很长的手动试错后,我能找到的文件在我的PHP应用程序,它是造成OPcache失败/崩溃,并列入黑名单在OPcache php.ini配置该文件(也降低了它的大小工作得很好,所以我怀疑问题是内部的实际代码),但我仍然在寻找一种简单的方法来调试这些问题,而无需检查和检查服务器上的每个文件.我也不知道它为什么会失败,所以找到失败的原因将有助于向OPcache开发人员提交bug报告.
编辑: 添加pastebin链接需要将代码添加到问题中.这是pastebin文件的开头:
<?php
global $_LANGADM;
$_LANGADM = array();
$_LANGADM['AdminAddressesd3b206d196cd6be3a2764c1fb90b200f'] = 'Delete selected';
$_LANGADM['AdminAddressese25f0ecd41211b01c83e5fec41df4fe7'] = 'Delete selected items?';
Run Code Online (Sandbox Code Playgroud)
我在寻找:
1)一种轻松确定OPcache是使脚本失败的扩展的方法,无需通过手动试验和错误遍历每个扩展(打开/关闭它们直到找到失败的扩展名).
2)轻松找到一种方式/日志,显示启用OPcache时哪个文件及其失败的原因.
简单来说 - 我们怎么知道OPcache失败时何时,何地以及为什么会失败,因为没有任何报告/日志就像在大海捞针一样,尤其是当OPcache失败时,即使Xdebug似乎没有记录或输出任何内容, 由于某些原因.
再次感谢
想知道是否有办法将2个独立功能的相同代码组合成1个功能.
就我而言:
jQuery('body').on('click', '.some_div', function (e) {
// Long and fancy code
});
jQuery(window).resize(function () {
// Do the same fancy stuff (identical code)
});
Run Code Online (Sandbox Code Playgroud) 在某些条件下,我遇到了一个与慢速查询有关的奇怪问题:我进行了一些测试,并且能够将问题隔离到一个名为的单个表products_description
(所有表都是 MyISAM)。起初我注意到当这个表是新的(即刚刚导入)时,查询总是执行得很快(~0.3s)。但是,如果我在此特定表上执行任何这些操作,则在任何时间(甚至在导入后立即执行):
CHECK
, OPTIMIZE
,ANALYZE
或REPAIR
,查询都会突然减慢 x10 倍(大约需要 4.5 秒)并且始终保持缓慢。
请注意,我在运行查询时强制无缓存以确保结果正确。
只有当我在该表上执行以下任何操作时,我才能恢复性能:
1)DROP
表并再次导入。
或者
2)ALTER
该表中的以下任何一项:Collation
或CHECKSUM
或DELAY_KEY_WRITE
。然后它以更改的值快速运行,当恢复到旧值时,性能保持快速。或者ALTER products_description FORCE
可以执行以恢复性能。
即便如此,如果我对该表执行任何CHECK
, OPTIMIZE
,ANALYZE
或REPAIR
操作,查询速度会下降,直到我执行 1) 或 2)
我测试的另一件事:在对表执行任何操作之前,我备份了表的文件 ( products_description.frm
, products_description.MYD
, products_description.MYI
),运行查询,它运行得很快。然后我CHECK
在表上执行,运行查询,速度慢了 10 倍,我复制了备份文件并覆盖了 3 个文件,再次运行查询,再次降低速度。
我已经将数据库压缩到了一个 ~5mb 的 zip 文件中(解压缩了 ~80mb)。如果有人想在您自己的环境中测试数据库,请告诉我,我会向您发送下载链接。我可以在几个不同的服务器上重现这个,在 MariaDB 10.1+ 和 MySQL 5.6+ 上。
这是我正在运行的 SQL 查询,您应该使用以下命令进行测试:
SELECT DISTINCT pav.products_options_values_id,
pav.products_options_values_name, …
Run Code Online (Sandbox Code Playgroud) 我正在使用带有正则表达式内容搜索的文件搜索实用程序(FileSeek).我正在搜索的内容基本上是其中包含的任何未注释的行while...each
.我已成功设法排除内联注释行,例如// while (list($key, $value) = each($_GET))
使用此正则表达式:^(?:(?!\/\/).)*while.+[\s=(]each[\s(]
如何改进正则表达式搜索(使其更具限制性),以从注释行和注释代码块中排除搜索结果,\* *\
例如:
/*
while (list($key, $value) = each($_GET))
*/
Run Code Online (Sandbox Code Playgroud)
要么
/* some code
while (list($key, $value) = each($_GET))
some code
*/
Run Code Online (Sandbox Code Playgroud)
换句话说,如何修改我的正则表达式以完全跳过/忽略注释的php块中的所有内容:\* *\
而不是拾取其中的结果?
在这样的查询中:
SELECT GROUP_CONCAT(DISTINCT( p.products_id )) AS comma_separated
FROM products p
left join specials s
ON p.products_id = s.products_id
left join products_to_categories p2c
ON p.products_id = p2c.products_id
left join products_description pd
ON p.products_id = pd.products_id
inner join products_attributes pa
ON p.products_id = pa.products_id
WHERE p.products_status = '1'
AND p2c.categories_id = 57
AND Date_sub(Curdate(), interval 7000 day) <= p.products_date_added
ORDER BY p.products_id DESC
Run Code Online (Sandbox Code Playgroud)
我在名为comma_separated 的字段中得到一长串逗号分隔数字的结果。如何修改查询以计算有多少逗号分隔值?
编辑:
谢谢,巴马尔在下面的回答。我不断得到一个更短的数字列表(实际计数中的 107 个值而不是 4000+),现在我终于找到了原因。似乎 GROUP_CONCAT 被限制为 1024 个字符,这对我的应用程序来说非常糟糕。来源:http : //www.bennadel.com/blog/2669-mysql-group-concat-fails-silently-when-it-hits-its-size-limit.htm
我.htaccess
的 osCommerce 网站上安装了一个由高级 SEO URL php 系统使用的文件。
它具有以下规则,适用于大多数情况,但从我的 GET 参数中删除句点:
RewriteRule ^([a-z0-9/-]+)-c-([0-9_]+).html$ index.php [NC,L,QSA]
RewriteRule ^([a-z0-9/-]+)-m-([0-9]+).html$ index.php [NC,L,QSA]
Run Code Online (Sandbox Code Playgroud)
所以网址是这样的:
http://example.com//index.php?cPath=44_95&page=1&range=1.99_2.99
Run Code Online (Sandbox Code Playgroud)
根据规则被重写,并且1.99_2.99
变为199_299
。
怎样才能安全度过经期呢?(即不会引起一些随机副作用)
如果我想修改逗号分隔列表,如下所示:
$foo = "2, 4, 33, 25, 66"
Run Code Online (Sandbox Code Playgroud)
成为
$foo = "'1-2', '1-4', '1-33', '1-25', '1-66'"
Run Code Online (Sandbox Code Playgroud)
在PHP中实现这一目标的最快,最有效的方法是什么?
编辑: 我试过这个,但寻找更好的方法:
$foo = "2, 4, 33, 25, 66";
$bar = implode("', '1-",explode(",",$foo));
$foo = "'1-". $bar ."'";
Run Code Online (Sandbox Code Playgroud) php ×6
mysql ×2
regex ×2
.htaccess ×1
apache ×1
coding-style ×1
database ×1
debugging ×1
each ×1
eclipse ×1
foreach ×1
formatting ×1
javascript ×1
jquery ×1
mariadb ×1
mod-rewrite ×1
opcache ×1
performance ×1
search ×1
sql ×1
while-loop ×1