Laravel4SAE v1.1.0发布,增加对Log的支持

Laravel4sae 是我专门为让laravel4完美运行在新浪sae上做的开源项目。

详细介绍可以看我发布的 【在 SAE 上运行 Laravel 4】

v1.0.x完成对基础模块的兼容,今天对Log进行适配。

在Laravel4中,实际上使用了Monolog中两种写日志的handler.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/**
* Register a file log handler.
*
* @param string $path
* @param string $level
* @return void
*/
public function useFiles($path, $level = 'debug')
{
$level = $this->parseLevel($level);
$this->monolog->pushHandler($handler = new StreamHandler($path, $level));
$handler->setFormatter(new LineFormatter(null, null, true));
}
/**
* Register a daily file log handler.
*
* @param string $path
* @param int $days
* @param string $level
* @return void
*/
public function useDailyFiles($path, $days = 0, $level = 'debug')
{
$level = $this->parseLevel($level);
$this->monolog->pushHandler($handler = new RotatingFileHandler($path, $days, $level));
$handler->setFormatter(new LineFormatter(null, null, true));
}

让Laravel支持sae的日志,也就变得很简单了,只需要增加一个Handler即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php namespace Lavender\Cloud\Sina\Log;
use Monolog\Handler\AbstractProcessingHandler;
class SaeLogHandler extends AbstractProcessingHandler {
/**
* {@inheritdoc}
*/
protected function write(array $record)
{
sae_debug((string) $record['formatted']);
}
}

没错,就是这么简单。

查看全文

恼人的ASP之逻辑运算

最近给东家的网站加入反恶意图片链接功能,东家的网站是用asp写的。

一个很简单的If语句,让哥们困惑了半天。

1
2
3
4
5
<%
If Not IsValidRequestUrl(url) And Not IsValidUrl(url) Then
'不允许发布
End If
%>

问题是,第一个条件是false了后依然去执行了IsValidUrl,这样就造成了大量不用检查的链接进入了检查程序,这样是非常浪费资源的。

再看上面的语句,在js,php,c等语言中,编译器会对逻辑运算优化,也就是,如果是and,左边的是false了,and后面的不会去计算,而asp中却不是这样。

ASP中测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%
Function test1()
response.write "test1 function processed<br>"
test1 = False
End Function
Function test2()
response.write "test2 function processed<br>"
test2 = True
End Function
If test1() And test2() then
Response.write "Will not printed!"
End If
Response.End
%>

执行结果如下:
asp-boolean-operation-test-result

同样的在php中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
function test1()
{
echo 'test1 Processed!'.PHP_EOL;
return false;
}
function test2()
{
echo 'test2 Processed!'.PHP_EOL;
return true;
}
if (test1() and test2()) {
echo 'will not print!';
}

查看全文