我遇到了一个问题.我在Linux机器上登录,其中写了几个正在运行的进程的输出.这个文件有时会非常大,我需要从该文件中读取最后一行.
问题是这个动作将经常通过AJAX请求调用,当该日志的文件大小超过5-6MB时,它对服务器来说并不好.所以我想我必须阅读最后一行,但不要读取整个文件并通过它或将其加载到RAM中,因为这只会加载到我的盒子中.
是否有任何针对此操作的优化,以便它运行顺畅,不会损害服务器或杀死Apache?
我有的其他选择是,exec('tail -n 1 /path/to/log')但它听起来不太好.
稍后编辑:我不想把文件放在RAM中,因为它可能会变得很大.fopen()不是一种选择.
我碰到了以下问题:我正在编写一个Linux bash脚本,它执行以下操作:
\n从刚刚读取的行末尾删除字符示例:commands.txt
ls
ls -l
ls -ltra
ps as
Run Code Online (Sandbox Code Playgroud)
bash文件的执行应该得到第一行,然后执行它,但是\n现在,shell只输出"command not found:ls"脚本的那部分看起来像这样
read line
if [ -n "$line" ]; then #if not empty line
#myline=`echo -n $line | tr -d '\n'`
#myline=`echo -e $line | sed ':start /^.*$/N;s/\n//g; t start'`
myline=`echo -n $line | tr -d "\n"`
$myline #execute it
cat $fname | tail -n+2 > $fname.txt
mv $fname.txt $fname
fi
Run Code Online (Sandbox Code Playgroud)
评论说你在问SO之前我已经尝试过了.有解决方案吗 在过去的几个小时里,我正在粉碎我的大脑......
长话短说:我正在为Zend Framework构建一个骨架应用程序,我到了需要设置api模块的部分.我正在用Zend_Rest_Controller这份工作.一切都很好,我需要在控制器中获取HTTP头以验证api密钥.
关于我在网上看到的各种教程,事情是通过前端控制器插件完成的,但是我需要它比那更"即插即用"(每次检查应用程序的配置,决定哪个模块是api等等).
我试过看起来最明显$this->getRequest()->getHeaders()但似乎不起作用的东西,至少不是我将要发送api密钥的HTTP头文件.reponse对象都没有.
任何人都可以帮我这个吗?
我正在开发一个基于Zend Framework的应用程序,我发现自己正在为API模块编写一个框架.我在网上读了一下,然后我开始编写骨架Zend_Rest_Controller.结果确定,使用API需要密钥登录.
当我的一位同事开始在我们的一个应用程序的适当API中实现骨架时,问题就开始了.他告诉我,他认为这将是更好,如果我们只有一个通常的Zend_Controller_Action扩展在API控制器和indexAction一个Zend_Rest_Server处理该对象.
我对此有点困惑.从我个人的角度来看,我想要一个"大于平均值"的控制器,其中包含每个动作中的4个动作(get,post,put,delete)和一些逻辑,而不是一个动作由Zend_Rest_Server.
我的问题是,从架构的角度来看,我无法确定2种解决方案中哪一种更好; 当然,随着时间的推移,最容易维护.
我正在尝试为N级深度编写路线.所以通常的类别URL看起来像这样:
http://website/my-category/my-subcategory/my-subcategory-level3/my-subcategory-level4
Run Code Online (Sandbox Code Playgroud)
它有一个未知的深度,我的路线必须匹配所有可能的水平.我为此做了一个路线,但我无法从我的控制器中获取所有参数.
$routeCategory = new Zend_Controller_Router_Route_Regex(
'(([a-z0-9-]+)/?){1,}',
array(
'module' => 'default',
'controller' => 'index',
'action' => 'index'
),
array( 1 => 'path'),
'%s'
);
$router->addRoute('category', $routeCategory);
Run Code Online (Sandbox Code Playgroud)
我似乎找不到将路由匹配的params发送到控制器的方法.如果您有更好的解决方案,我愿意接受建议!
我正在写一个从臭名昭着的数据中读取数据的Perl脚本,/dev/input/event*我没有找到将内核生成的密钥代码转换为ASCII的方法.
我说的这个表中的Linux的关键代码在这里和我似乎无法找到的东西,会帮我翻译他们没有硬编码的数组到脚本.我错过了什么吗?
我想跳过数组部分,因为它似乎不是一个好习惯,所以任何想法?:)
我有一个非常简单的SQL查询,但缺少一些东西,我还没有找到这个问题的答案.问题是我选择了一些带有几个ID的字段,我希望按照这个特定的顺序排序结果.
查询如下
SELECT `content`.*
FROM `content`
WHERE (user_id = "1" AND ( id = "4" OR id = "7" OR id = "5" OR id = "8" ))
Run Code Online (Sandbox Code Playgroud)
默认顺序是"id ASC"(id是我的主键),但我希望在这种特殊情况下订单为4,7,5,8.
有任何想法吗?
我在项目工作时碰到了一个问题.我想"抓取"某些感兴趣的网站并将其保存为"完整网页",包括样式和图像,以便为它们构建镜像.我多次给网站添加书签以便稍后阅读,几天之后网站就被关闭了,因为它遭到了黑客入侵而且所有者没有备份数据库.
当然,我可以很轻松地阅读与PHP文件fopen("http://website.com", "r")或fsockopen()更主要的目标是保存完整的网页,所以如果它出现故障,它仍可以提供给其他人就像一个"编程时间机器" :)
有没有办法在没有读取的情况下执行此操作并保存页面上的每个链接?
Objective-C解决方案也很受欢迎,因为我也试图弄清楚它的更多内容.
谢谢!
我碰到了一个问题,我似乎找不到一个好的解决方案来使它工作.我必须在Zend Framework项目中创建一些动态路由.我会很快解释我的问题是什么:
我需要动态自定义路由"扩展"默认路由(module/controller/action/params).我正在为之工作的项目有几个合作伙伴,这些路线必须与这些合作.为了存储合作伙伴,我创建了一个静态类,它看起来像这样.
<?php
class App_Partner
{
static public $partners = array(
array(
'name' => 'partner1',
'picture' => 'partner1.jpg'
),
array(
'name' => 'partner2',
'picture' => 'partner2.jpg'
),
array(
'name' => 'partner3',
'picture' => 'partner3.jpg'
)
);
static public function routePartners() {
$partners = array();
foreach(self::$partners as $partner) {
array_push($partners, strtolower($partner['name']));
}
$regex = '(' . implode('|', $partners) . ')';
return $regex;
}
}
Run Code Online (Sandbox Code Playgroud)
所以App_Partner::routePartners()给我一个字符串(partner1|partner2|partner3),我用它来创建正确的路线.我的目标是为每个我在Bootstrap中设置的路由设置自定义路由.因此,如果我有一个路线add-product.html设置,我希望它适用于每个合作伙伴partner1/add-product.html,partner2/add-product.html并且partner3/add-product.html.此外,partner1/ …