我们有一个持久爬行我们的目标站点的爬虫,它的日志文件变得非常庞大.在某些情况下超过1 GB,我不太习惯删除或覆盖它们.您如何管理大型日志文件的任何示例?
我使用下面的函数将文件从一个服务器复制到另一个服务器.它大部分时间都有效,但有时我会在日志文件中开始出现此错误:
Module 'ssh2' already loaded in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)
它会停止复制.稍后由于某种原因,错误将停止,复制将再次开始工作.这是什么问题?
function getConn($server,$username,$password)
{
$connection = 0;
if (function_exists("ssh2_connect"))
{
$connection = ssh2_connect($server, 3817);
if($connection)
{
if(ssh2_auth_password($connection, $username, $password))
{
return $connection;
}
}
}
return 0;
}
function scp($server,$username,$password,$remotepath,$localpath)
{
$connection = 0;
$connection = $this->getConn($server,$username,$password);
if($connection)
{
$ret = ssh2_scp_send($connection, $localpath, $remotepath, 0644);
ssh2_exec($connection, 'exit');
}
}
Run Code Online (Sandbox Code Playgroud) 我想查看Gearman守护程序是否正在运行.然后才运行任务,以便我的应用程序不会崩溃.
这是我的代码:
$daemonRunning = true;
while( true )
{
try
{
Yii::app()->gearman->client->ping( true );
if ( $daemonRunning === false )
{
echo "Daemon back online. Starting signature process...\n";
}
Yii::app()->gearman->client->runTasks();
}
catch( GearmanException $e )
{
echo "Daemon appears to be down. Waiting for it to come back up...\n";
$daemonRunning = false;
}
sleep(1);
}
Run Code Online (Sandbox Code Playgroud)
但问题是ping不会抛出异常,它会抛出一个致命的错误:
PHP Error[2]: GearmanClient::ping(): flush(GEARMAN_COULD_NOT_CONNECT) 127.0.0.1:4730 -> libgearman/connection.cc:673
Run Code Online (Sandbox Code Playgroud)
虽然奇怪的是,如果我删除ping并仅使用runTasks,则抛出异常.
有关:
当进程运行时Gearman守护程序关闭时,如何处理错误?当我关闭Gearman守护进程时,我从PHP得到以下错误:
php: libgearman/universal.cc:481: gearman_return_t connection_loop(gearman_universal_st&, const gearman_packet_st&, Check&): Assertion …Run Code Online (Sandbox Code Playgroud) 今天有一位采访者问我如何将阿拉伯语作为第二语言实现到PHP Web应用程序中.我谈到为数据库和前端选择unicode编码,以及设计RTL友好的用户界面模块.他对答案似乎并不满意.我对多语言系统一无所知,你会如何回答这个问题?
我已经添加了language:'ar',contentsLangDirection:'rtl',contentsLanguage:'ar'使用jQuery适配器被初始化选项,我CKEditor的实例.但文本仍然保持一致.
它<html>使用dir='rtl'和声明标记lang='ar',但是在每个<p>标记上,它都具有内联text-align: left样式.
我该如何摆脱那种风格?
我有一个正则表达式模式,用于搜索文本文件中的单词.我如何忽略重复?
例如,看看这段代码
$pattern = '/(lorem|ipsum|daboom|pahwal|ababaga)/i';
$num_found = preg_match_all( $pattern, $string, $matches );
echo "$num_found match(es) found!";
echo "Matched words: " . implode( ',', $matches[0] );
Run Code Online (Sandbox Code Playgroud)
如果我在文章中有不止一个说lorem,输出将是这样的
5 matches found!
Matched words: daboom,lorem,lorem,lorem,lorem
Run Code Online (Sandbox Code Playgroud)
我希望模式只找到第一个出现,并忽略其余的,所以输出应该是:
2 matches found!
Matched words: daboom,lorem
Run Code Online (Sandbox Code Playgroud) 我有一个长期运行的脚本,无缘无故地消失了.它应该运行超过8小时,但一两个小时后就会消失,没有错误,什么都没有.我尝试通过CLI和http运行它,没有区别.
我有以下参数设置:
set_time_limit(0);
ini_set('memory_limit', '1024M');
Run Code Online (Sandbox Code Playgroud)
我一直在监视内存使用情况,它不会超过200M
还有什么我想念的吗?它为什么会消亡?
我在FB4中编译了我的AIR应用程序的.air文件,我在尝试安装时遇到了这个错误.我尝试创建一个新的应用程序,只是复制代码,我得到相同的错误.我究竟做错了什么?我甚至多次重新创建证书.
考虑这个查询:
SELECT s.*, COUNT( ssh_logs.id ) AS ssh_count FROM servers s
LEFT JOIN logs ssh_logs ON s.ip_address = ssh_logs.server_ip
Run Code Online (Sandbox Code Playgroud)
我的印象是LEFT JOIN左表上显示所有行,无论条件是否匹配ON.
SELECT s.* FROM servers s
Run Code Online (Sandbox Code Playgroud)
返回12个条目,而第一个查询仅返回ip地址匹配的1.
那么如何让第一个查询显示服务器表中的所有行以及连接的表数据?
码:
var x = new Promise((resolve, reject) => {
setTimeout( function() {
console.log( 'x done' );
resolve()
}, 1000 );
});
Promise.resolve().then(x).then((resolve, reject) => {
console.log( 'all done' );
});
Run Code Online (Sandbox Code Playgroud)
输出:
all done
x done
Run Code Online (Sandbox Code Playgroud)
预期产量:
x done
all done
Run Code Online (Sandbox Code Playgroud)
x在调用下一个then回调之前,为什么承诺没有等待解决?
JSFiddle:https://jsfiddle.net/puhbqtu0/1/