我有可能需要按1-n键排序的大文件.其中一些键可能是数字键,其中一些可能不是.这是一个固定宽度的柱状文件,因此没有分隔符.
使用Unix排序有一个很好的方法吗?使用一个键就像使用'-n'一样简单.我已阅读该手册页并简要搜索了Google,但没有找到一个好的例子.我将如何实现这一目标?
注意:由于文件大小的可能性,我已经排除了Perl.这将是最后的手段.
我正在用PHP编写一个简单的SFTP客户端,因为我们需要通过n个远程服务器以编程方式检索文件.我正在使用PECL SSH2扩展.
不过,我遇到了一个障碍.php.net上的文档表明你可以这样做:
$stream = fopen("ssh2.sftp://$sftp/path/to/file", 'r');
Run Code Online (Sandbox Code Playgroud)
但是,我有一个尝试类似的ls方法
public function ls($dir)
{
$rd = "ssh2.sftp://{$this->sftp}/$dir";
$handle = opendir($rd);
if (!is_resource($handle)) {
throw new SFTPException("Could not open directory.");
}
while (false !== ($file = readdir($handle))) {
if (substr($file, 0, 1) != '.'){
print $file . "\n";
}
}
closedir($handle);
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
PHP Warning: opendir(): Unable to open ssh2.sftp://Resource id #5/outgoing on remote host
Run Code Online (Sandbox Code Playgroud)
这非常有意义,因为当您将资源转换为字符串时会发生这种情况.文档错了吗?我尝试用主机,用户名和主机替换资源,但这也不起作用.我知道路径是正确的,因为我可以从命令行运行SFTP,它工作正常.
有没有其他人尝试过使用SFTP的SSH2扩展?我错过了一些明显的东西吗?
更新:
我在内部的另一台机器上安装了sftp,它运行得很好.所以,我试图连接到的服务器必须有一些不起作用.
我打算使用MySQL及其内置的加密功能来加密/解密某些表中的某些列.我担心的是我需要将密钥存储在某个地方.我当然可以将密钥存储在一个文件中并控制该文件的权限以及访问它的应用程序的权限,但这还够吗?我也可以创建一个Web服务来获取密钥或其他东西.
我在一家小商店里,我将是唯一可以访问应用程序所在机器的人(可能是另一个人). 编辑:我应该补充说,除非我添加了一个层,否则这个应用程序的Web部分需要解密数据.
我看起来很恶心,但似乎没有人有一个防弹的答案.
这是你必须满足的问题吗?鉴于我正在使用MySQL和PHP(可能是Python),有更好的方法来解决这个问题吗?
我正在用PHP编写一组数据库驱动的应用程序.这些应用程序将作为自己的用户在Linux服务器上运行.其他用户有时可能会在系统上,但具有非常可控的访问权限.他们根本无法访问的其他服务器.我还将向需要编写Perl脚本的开发人员公开一个限制存储过程API,这些脚本使用DBI和我编写的一组函数来访问数据库.
我的问题是保护包含连接字符串的配置文件的最佳方法是什么?
具有[4+] 00权限的不同用户是否足够?我应该加密它们吗?这似乎只是将问题转移到其他地方,以便我担心存储加密密钥的位置.我意识到Perl开发人员需要拥有自己的连接字符串,因为它们只具有执行数据库权限.
我用C编写了一个程序来解析大型XML文件,然后使用insert语句创建文件.其他一些进程会将文件摄取到MySQL数据库中.此数据将用作索引服务,以便用户可以轻松找到文档.
我选择了InnoDB来实现行级锁定.C程序将在给定的调用中生成500到500万个插入语句.
将所有这些数据尽快送入数据库的最佳方法是什么?另一件需要注意的是,DB位于单独的服务器上.是否值得将文件移动到该服务器以加快插入?
编辑:此表不会真正更新,但行将被删除.
可能重复:
有多少参数太多了?
我只是写了一个带有几个值的函数,它让我思考.函数/方法的参数的数量是多少?什么时候(如果)它表示有缺陷的设计?你设计/重构函数来接受结构,数组,指针等来减少参数的数量吗?你是否为了减少参数的数量而重构数据?不过,似乎这在OOP设计中可能稍微适用一些.只是好奇看别人如何看待这个问题.
编辑:作为参考,我刚写的函数采用了5个参数.我使用了我的AP Econ老师给我的几个定义.超过2; 少于7.
这是一个适用于你们任何一个Doctrine用户的人.我有一个PHP CLI守护进程,每隔n秒检查一次表,以查找尚未处理的条目.它基本上是一个FIFO.无论如何,我总是超过分配给PHP的内存,因为Doctrine不会释放它的资源.为了解决这个问题,它为查询对象提供了免费.我似乎无法让它工作.这是代码:
22 print "You are using " . (memory_get_usage() / 1024). "\n";
23 $query = Doctrine_Query::create()
24 ->from('SubmissionQueue s')
25 ->where('s.time_acted_on IS NULL')
26 ->orderby('s.time_queued')
27 ->limit(1)
28 ->execute();
29 print $query[0]->time_queued . "\n";
30 $query->free();
Run Code Online (Sandbox Code Playgroud)
我有什么想法我做错了吗?
编辑:我使用的是1.0.3
编辑:我已经尝试了以下所有建议.unset()
在我找到之前,我非常满怀希望free()
.
以下是可能有助于任何帮助的更多代码.在你质疑连接的打开和关闭之前,它将是生成孩子的守护进程,而且我经历过连接必须是唯一的.
1 <?php
2
3 require_once('/usr/local/lib/php/Doctrine/lib/Doctrine.php');
4
5 spl_autoload_register(array('Doctrine', 'autoload'));
6
7 $manager = Doctrine_Manager::getInstance();
8 $manager->setAttribute('model_loading','conservative');
9 Doctrine::loadModels('lib/model/master');
10
11 while(1){
12 print "You are using " . intval(memory_get_usage() / 1024) . "\n";
13 $manager->connection('********************************************','master'); …
Run Code Online (Sandbox Code Playgroud) 我有几个独立的可执行Perl,PHP CLI脚本和C++程序,我需要开发一个退出错误代码策略.其他程序使用我exec()
在PHP中创建的包装类调用这些程序.所以,我将能够得到一个错误代码.根据该错误代码,调用脚本将需要执行某些操作.
我做了一些研究,似乎1-254(或者只是1-127)范围内的任何内容都可以是用户定义的错误代码的公平游戏.
我只是想知道在这种情况下其他人如何处理错误处理.
我已经通过perldoc和O'Reilly书籍进行了一些挖掘,但没有找到任何方法来做到这一点.我是不是喜欢使用像Readonly这样的东西?
更新:
我对Readonly没有任何反对意见.我只是想能够做一些像PHP的常量().
例如,如果Perl有constant():
use constant {
FIELD_EXAMPLE_O => 345,
FIELD_EXAMPLE_L => 25
};
my $var = 'EXAMPLE';
my $c = 'FIELD_' . $var . '_L';
my $value = constant($c);
# $value is 25
Run Code Online (Sandbox Code Playgroud)
如果Readonly是最好的方法,那么我将使用它.