Perl脚本,使用fork或线程?

前端之家收集整理的这篇文章主要介绍了Perl脚本,使用fork或线程?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一些脚本来收集来自多个服务器的数据,这个数字会增长,并且我会尝试将来证明我的脚本,但是我有点卡住了.

所以首先我有一个脚本在mysql数据库中查找IP,然后连接到每个服务器抓取一些信息,然后再次将其放入数据库.

我一直认为这是有限的时间来做这个,如果我有100台服务器,需要一点时间去每个服务器获取信息,然后将其推送到数据库.所以我想过在perl中使用fork或thread?

在我的情况下哪个是首选?而且有人有任何例子吗?

谢谢!

编辑:好的,所以需要更多的信息:我在Linux上运行,我认为我可以获得主脚本来收集数据库信息,然后发送每个子流程/任务来连接和收集信息然后再推送信息到数据库.

解决方法

哪个最好取决于您的需求;但是我的经验是值得的:

上次我使用perl的线程时,我发现它实际上比分叉更慢,更有问题,因为:

>线程无论如何都会复制所有数据,就像线程一样,但是事先就完成了
>线程并不总是在退出时清理复杂的资源;导致内存泄漏缓慢,而这在目的地是服务器时是不可接受的
>几个模块没有干净地处理线程,包括我使用的数据库模块,这些模块被严重混淆.

需要注意的一个陷阱是“forks”库,它模拟“线程”但使用真正的分叉.我在这里遇到的问题是它模仿的许多行为正是我试图摆脱的.我最终使用了经典的老式“fork”并使用套接字在需要的地方进行通信.

fork的问题(库,而不是fork命令):

>仍然困惑数据库系统>共享变量仍然非常有限>覆盖’fork’命令,导致软件中其他地方出现意外行为

猜你在找的Perl相关文章