在比较字符串值时,我会一直开始使用===(三等号,严格比较),但现在我发现了
"foo" === new String("foo")
Run Code Online (Sandbox Code Playgroud)
是假的,与此相同:
var f = "foo", g = new String("foo");
f === g; // false
Run Code Online (Sandbox Code Playgroud)
当然:
f == g; // true
Run Code Online (Sandbox Code Playgroud)
那么建议总是使用==进行字符串比较,或者总是在比较之前将变量转换为字符串?
我有最新的PhpStorm(2016.2)和PHPUnit phar(5.5.4).出于某种原因,当我在PhpStorm的项目中运行PHPUnit测试时,它会添加--teamcity到run命令,导致失败:
Testing started at 12:52 PM ...
Unit test suite invoked with a path to a non-unit test: --teamcity
Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)
我不知道这个--teamcity选项来自哪里,无论我运行什么测试,甚至从空白配置开始,它都会发生.我也没有安装TeamCity插件,我甚至没有使用TeamCity.
以下是完整命令显示的内容:
/usr/local/Cellar/php70/7.0.9/bin/php /Users/name/bin/phpunit-5.5.4.phar --configuration /path/to/config/my-phpunit.xml ClassNameTest /Users/name/PhpstormProjects/path/to/tests/unit/app/ClassNameTest.php --teamcity
Run Code Online (Sandbox Code Playgroud)
(敏感信息被换掉)
我想要做的就是摆脱这个--teamcity选项,如果我在没有该选项的单独终端窗口中运行,一切都会正常工作.这最近才开始发生,也许是在PhpStorm更新之后.
我的情况如下:
我有一个VM(Ubuntu服务器13.04)与PHP 5.4.9-4ubuntu2.2,nginx/1.2.6,php5-fpm和Xdebug v2.2.1.
我正在使用PhpStorm 6.0.3开发一个应用程序(我在VM上部署).
我的问题是,每当我尝试启动调试会话时,IDE都不会从Web服务器获取连接请求(因此,会话永远不会启动).
我查看了很多关于xdebug配置的建议,但没有发现任何有用的东西.
我最近意识到,如果我通过浏览器自己设置XDEBUG_SESSION cookie(感谢FireCookie),我可以调试我的应用程序...所以我的猜测是有一些东西阻止网络服务器将cookie发送回客户端.
问题是,我在不同的项目中使用相同的IDE配置,该项目部署到不同的基于CentOS的VM(使用lighttpd),并且工作得很好.
我试图将我当前的项目部署到这样的VM(将Web服务器更改为NginX)并且它工作正常(不幸的是我丢失了该VM并且无法检查配置:().
所以...这是我的NginX配置:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name localhost;
location / {
try_files $uri $uri/ /dispatch.php;
}
#
location ~ \.php$ {
root /var/www/bresson/web;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index dispatch.php;
fastcgi_param SCRIPT_FILENAME /var/www/$fastcgi_script_name;
include fastcgi_params;
#fastcgi_pass 127.0.0.1:9009;
}
}
Run Code Online (Sandbox Code Playgroud)
fpm config(/etc/php5/fpm/pool.d/www.conf):
listen = /var/run/php5-fpm.sock
Run Code Online (Sandbox Code Playgroud)
xdebug.ini:
zend_extension=/usr/lib/php5/20100525/xdebug.so
xdebug.remote_port=9000
xdebug.remote_enable=On
xdebug.remote_connect_back=On
xdebug.remote_log=/var/log/xdebug.log
Run Code Online (Sandbox Code Playgroud)
任何想法将不胜感激.谢谢!
编辑:
我尝试的另一件事是从php开始一个会话,我看到会话cookie创建没有任何问题...
第二编辑:
我想我找到了问题所在:URI.
我写了另一个脚本,以尝试配置参数和东西(更简单的一个),它工作正常!
所以最终我认为问题是查询参数(即:) XDEBUG_SESSION_START=14845没有达到我的脚本.
问题是我的起始URI,它是形式的/images/P/P1/P1010044-242x300.jpg.通过一些虚拟主机配置,我应该能够将其路由到类似的东西/dispatch.php/images/P/P1/P1010044-242x300.jpg,并使用URI的其余部分作为参数.所以...我本身没有找到解决方案,但现在我有一个可行的解决方法(指向我的起始URL /dispatch.php),这将暂时做到这一点.谢谢
我正在使用solr来搜索我的数据库,并且我正在尝试在conf/schema.xml中添加一个新字段(文章的publisher_id)以在我的数据库上搜索后获取publisher_id的值,我没有找到任何与此字段等效的字段名称.那么如何将它作为一个字段添加到schema.xml中,以便与文章的搜索值(正文,标题,日期和发布商ID)一起返回?
它可能不是最佳实践,但在PHP中我们可以在文件底部定义类但是,
$t = new Test();
$t->foo();
class Test extends FakeInvalidClass {
public function foo(){
echo "arrived in foo.";
}
}
Run Code Online (Sandbox Code Playgroud)
生成错误消息:
Fatal error: Class 'Test' not found in /mysite/test.php on line 4
这很奇怪......类'Test'在文件的底部定义,PHP应该失败,因为FakeInvalidClass没找到,不是Test
<?php
// test.php
class Test extends FakeInvalidClass {
public function foo(){
echo "arrived in foo.";
}
}
$t = new Test();
$t->foo();
Run Code Online (Sandbox Code Playgroud)
产生更易读的错误
Fatal error: Class 'FakeInvalidClass' not found in /mysite/test.php on line 4
作为参考,这很好用:
<?php
// test.php
$t = new Test();
$t->foo();
class …Run Code Online (Sandbox Code Playgroud) 我目前正在处理一个大的预先存在的代码库,它可能有一个或多个setInterval 定时器,它们从各种插件或库中一直运行.这基本上使得无法尝试使用Break on Next来调试单击元素时发生的情况.
问题:一旦我单击Break on Next,浏览器调试器(尝试使用Firebug和Chrome)会在其中一个setInterval函数中停止,然后我才有机会与页面进行交互以真正调试我想要的事件.
具体问题:无论多少次点击它们,我都会在未经检查时保持未选中的复选框.我删除了ID和类名也没有用,似乎没有附加事件处理程序.
注意:不使用jQuery
这段代码是关于.
竞争条件:调度和编译器行为在进程或线程同步中发挥重要作用.演示同步需求的最简单方案来自两个线程/进程之间创建的竞争条件,试图修改共享变量的值,这通常会导致数据不一致和错误的结果.以下示例演示了这种情况:
我是C的新手,我遇到了这个警告发生的问题.警告意味着什么,我该如何解决它.我写的代码在这里:
q1.c: In function ‘runner’:
q1.c:13:1: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long int’ [-Wformat=]
printf("T tid: %d x before: %d\n", syscall(SYS_gettid),x); int i;
^
q1.c:19:1: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long int’ [-Wformat=]
printf("T tid: %d x after: %d\n", syscall(SYS_gettid),x);
Run Code Online (Sandbox Code Playgroud)
这是代码:
// Race condition
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/syscall.h>
int x=0;
void * runner(void *arg) …Run Code Online (Sandbox Code Playgroud) 我在PHPStorm中使用Xdebug和我的本地apache webserver进行调试.我也在使用CodeSniffer来检查我的代码风格.CodeSniffer(phpcs.bat)是一个可以在PHPstorm中启用的工具,它实际上是一个每3-5秒运行一次的外部PHP脚本.令人讨厌的是,每当我启用调试(侦听连接)时,它都会尝试调试phpcs脚本,即使它不是我项目的一部分.甚至更奇怪的是phpcs是通过php命令行运行的,而不是Xdebug所属的apache服务器.
反正有没有阻止phpStorm调试这个外部命令行脚本?
随机数函数的目的是得到 - 你猜对了 - 一个随机数,你无法预测的东西(或者很难确定地预测).如果mt_rand()函数比旧函数更快且更不可预测(更"随机")rand(),为什么不将基础实现切换到新方法?
换句话说,rand()如果/因为底层实现发生了变化,那么使用哪种程序会破坏PHP的更高版本?
假设我有一个主键列表,每行需要更新一个值.运行是否更好:
-- run 10,000 of these queries
UPDATE mytable SET myflag = 1 WHERE id = [each_id]
Run Code Online (Sandbox Code Playgroud)
或者将更新组合成批量查询,如下所示:
-- run 100 of these queries, where the IN () list contains about 100 elements
UPDATE mytable SET myflag = 1 WHERE id IN (3, 4, 5, 9, 99, ... 7887 )
Run Code Online (Sandbox Code Playgroud)
100个IN()项目的100个查询怎么样?
我有一些饼图的非常基本的数据.
Yes: 189.84 (57.03%)
No: 252 (42.97%)
Abstain: 0 (0%)
Run Code Online (Sandbox Code Playgroud)
当我通过以下网址请求谷歌饼图时:http://chart.apis.google.com/chart?tt = p&chs = 400x200&chl = Yes%2042.97%| No.%2057.03%| Abstain%200%&chd = t: 189.94 ,252,0&chdl = 189.84 | 252 | 0&CHCO = FF0000
...看起来非常像每个彩色部分正好是50%,即使一个是42%而另一个是57%.这是我的数据格式的问题还是这是饼图服务的限制?
php ×3
javascript ×2
phpstorm ×2
xdebug ×2
c ×1
equality ×1
field ×1
http ×1
mysql ×1
nginx ×1
object ×1
performance ×1
phpunit ×1
postgresql ×1
solr ×1
sql-update ×1
teamcity ×1
unix ×1