我刚切换到monolog并想将我的消息记录到PHP控制台而不是文件.对于某些人来说这似乎是显而易见的,但我花了一点时间才弄清楚如何做到这一点,我在SO上找不到类似的问题/答案.
Monolog的Github自述文件中的示例仅显示如何使用文件:
<?php
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
// create a log channel
$log = new Logger('name');
$log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING)); // <<< uses a file
// add records to the log
$log->addWarning('Foo');
$log->addError('Bar');
Run Code Online (Sandbox Code Playgroud)
但它没有说明如何将消息记录到控制台.在谷歌上搜索之后,我登陆了Symphony的帮助页面,或者是寻找登录浏览器控制台的人的问题.
我想用服务器对服务器进行一些API调用HttpURLConnection.但请求不成功,返回:
<error>
<http_status>400 Bad Request</http_status>
<message>Unexpected request Content-Type header ''. Expecting 'application/x-www-form-urlencoded'.</message>
</error>
Run Code Online (Sandbox Code Playgroud)
所以我想检查发送到服务器的"真实"内容是什么.通过真实内容我的意思是确切的HTTP请求.
我有什么想法可以看到这个吗?
编辑: 基于这里的第一个答案,我应该澄清我的问题:我想避免使用像HTTP嗅探器或任何东西的外部程序,我希望有一个功能或属性或任何包含我正在寻找的信息.
如果不是这样,有人知道是否可以手动重建此信息(例如通过调用getRequestMethod()等几个函数)
我经常遇到这个问题,所以我自己也要努力建立这样的功能.只需知道如何:)
我正在使用sprintf()来获取具有一定精度的一些浮点数的格式化字符串.另外,我想添加前导零以使所有数字均匀.对整数执行此操作非常简单:
sprintf('%02d', 1);
Run Code Online (Sandbox Code Playgroud)
这将导致01.但是,对具有精度的浮点执行相同操作不起作用:
sprintf('%02.2f', 1);
Run Code Online (Sandbox Code Playgroud)
收益率1.00.
如何将前导零添加到浮点值?
在PHPUnit中模拟一个接口时,PhpStorm在它被用作类型提示函数的参数时会抱怨.
例
interface InterfaceA{
}
class ClassA{
public function foo(InterfaceA $foo){}
}
class PhpStormTest extends PHPUnit_Framework_TestCase
{
public function testFoo(){
$mock = $this->getMock("InterfaceA");
$a = new ClassA();
$a->foo($mock);
}
}
Run Code Online (Sandbox Code Playgroud)
在$a->foo($mock);PhpStorm强调$mock警告Expected InterfaceA, got PHPUnit_Framework_MockObject_MockObject
图片
我猜它正在发生,因为PHPUnit创建了一个运行时模拟器,而PhpStorm无法知道它实际上是在实现接口.
如果在请求期间发生错误,Guzzle会抛出异常.不幸的是,似乎没有特定于超时的错误 - 这对我来说很重要,因为我知道那些可能会偶尔发生.我想重试相应的请求,并且需要能够判断是否由于超时而发生错误.
来自文档:
// Timeout if a server does not return a response in 3.14 seconds.
$client->get('/delay/5', ['timeout' => 3.14]);
// PHP Fatal error: Uncaught exception 'GuzzleHttp\Exception\RequestException'
Run Code Online (Sandbox Code Playgroud)
该RequestException在其信息message属性:
"cURL error 28: Operation timed out after 3114 milliseconds with 0 bytes received"
Run Code Online (Sandbox Code Playgroud)
所以我可以评估消息模式,但这感觉有点不对,因为这些消息将来很容易改变.
使用guzzle 4时是否有更好/更稳定的方法来检查超时?
JetBrains最近发布了PhpStorm 8,但我找不到任何有关如何升级的信息.我目前正在使用PhpStorm 7.
EAP版本明确提到应该使用新文件夹:
此版本包含30天的限时许可证.没有可用的补丁更新.
请记住将.zip和.tar.gz版本安装到完全空的文件夹中.不要只是解压缩以前的版本!
请注意,8.0版本使用单独的设置文件夹,因此可能需要自动或手动导入设置.第三方插件可能与134.x版本兼容也可能不兼容 - 如果出现任何问题,请ping插件作者.我们很乐意为他们提供支持.
资料来源:http://blog.jetbrains.com/phpstorm/2014/03/phpstorm-8-early-access-program-started/
我不知道这是否也适用于最终版本?有没有关于如何升级的公开信息?
有没有办法检测gz文件在PHP中是否损坏?
我目前正在使用http://www.php.net/manual/de/function.gzread.php#110078来确定文件大小并通过读取整个 * 文件
$zd = gzopen ( $file, "r" );
$contents = gzread ( $zd, $fzip_size );
gzclose ( $zd );
Run Code Online (Sandbox Code Playgroud)
不幸的是,一些 gz 文件已损坏,最后 4 个字节不代表 gz 文件的实际长度。只要数字是负数,我就可以判断出问题,但有时它是正数(并且非常大),这会导致内存不足错误。如何提前检查文件是否已损坏?
我正在尝试为URI类启用IDN/IRI支持,因为我需要德语umlaut-domains上的"Uri.IsWellFormedUriString"方法(例如www.bücher.de).
我在/sf/answers/427537771/上找到了类似的问题(摘自http://msdn.microsoft.com/en-us/library/system.uri.aspx "国际资源标识符支持")但解决方案对我不起作用.我当前的app.config文件看起来像这样:
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="..." type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
<!-- ... some sections in here ... -->
</sectionGroup>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<!-- ... some sections in here ... -->
</sectionGroup>
</configSections>
<userSettings>
<!-- ... some settings in here ... -->
</userSettings>
<applicationSettings>
<!-- ... some settings in here ... -->
</applicationSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
当我刚补充
<uri>
<idn enabled="All" />
<iriParsing …Run Code Online (Sandbox Code Playgroud)