获取所有文件后才执行命令

小狐狸

我服务器上的所有脚本都在 PHP 上,但只有使用 Node.js 才能解决一项任务。

Node.js 从数据库中获取 URL 列表,获取每个页面的内容并将其写入文件。然后 Node.js 调用 PHP 脚本,该脚本处理保存的文件。

const filesystem = require('fs');
const requestPromise = require('request-promise');
const mysql = require('mysql');
const database = mysql.createConnection({});

database.connect(function(err){
    if (err){throw err}
    database.query('SELECT * FROM pages', function(err, result) {
        if (err){throw err}
        Object.keys(result).forEach(function(key){
            let page = result[key];
            let url = "https://www.website.com/" + page.url
            requestPromise({})
                .then((html) => {
                    filesystem.writeFile(page.id + '.html', html, function(err){
                        if (err){return console.log(err)}
                    });
                })
                .catch((err) => {console.log(err)})
        })//foreach
    })
})//database.connect

//only after all files have been got and filled!
requestPromise({uri: 'http://127.0.0.1/parse_with_php'})

但问题是在调用本地脚本时,并非所有文件都已保存。

PS获取和保存URL后面的内容需要大部分时间,但不会从数据库中取出几行。

小狐狸

备注二:查询数据库也需要时间;我又使用了一个模块util工作代码:

const util = require('util');
const mysql = require('mysql');
const filesystem = require('fs');
const requestPromise = require('request-promise');

const database = mysql.createConnection({/*options*/});
const query = util.promisify(database.query).bind(database);

(async () => {
    try {
        const pages = await query('SELECT * FROM pages');
//console.log(pages);
        for (let key of Object.keys(pages)){
            const page = pages[key]
            const url = "https://www.website.com/" + page.url
            const options = {
                uri: url,
                transform: function(body) {return body},
            }
            const html = await requestPromise(options)
            const writeResponse = await filesystem.writeFile(page.id + '.html', html, function(err){if (err){console.log(err)}})
        }
    } finally {
        database.end(); 
//console.log('all files have been saved')
        requestPromise({uri: 'http://127.0.0.1/parse_with_php'})
        process.exit()
    }
})()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

文件更改后是否有执行命令的方法?

来自分类Dev

Bash脚本直到延迟后才执行命令

来自分类Dev

如何仅当 hdfs 中有文件时才执行命令

来自分类Dev

命令行遍历所有文件夹并执行命令

来自分类Dev

Bash:遍历所有子目录并在某些文件上执行命令

来自分类Dev

快速执行命令后获取终端输出

来自分类Dev

在Vim中执行命令后自动缩进文件

来自分类Dev

我如何遍历FolderA的所有子文件夹并执行命令来检查已修改的文件

来自分类Dev

是否可以使用awk打印文件中的所有行,然后在单个列上执行命令?

来自分类Dev

cd进入所有目录,对该目录中的文件执行命令,然后返回到先前的当前目录

来自分类Dev

在终端中执行命令后,有时我无法执行其他命令

来自分类Dev

在终端中执行命令后,有时我无法执行其他命令

来自分类Dev

在zmap中执行命令后的猫

来自分类Dev

inotifywait建立监视后执行命令

来自分类Dev

inotifywait建立监视后执行命令

来自分类Dev

执行命令后如何控制输出?

来自分类Dev

执行命令后如何应用-v?

来自分类Dev

我执行命令后出现黑屏

来自分类Dev

从挂起恢复后如何执行命令?

来自分类Dev

写入“:w”后,VIM执行命令

来自分类Dev

SSH成功连接后执行命令

来自分类Dev

更改目录后执行命令

来自分类Dev

仅当端口空闲时才执行命令的Bash脚本

来自分类Dev

如何从python脚本打开cygwin,执行命令并从文件中的命令行获取数据

来自分类Dev

python-执行命令并获取输出

来自分类Dev

如何获取执行命令的用户的IP?

来自分类Dev

执行特定命令后如何执行命令/脚本?

来自分类Dev

在执行命令后如何编写shell脚本以自动获取密码

来自分类Dev

gnome-terminal从文件执行命令

Related 相关文章

  1. 1

    文件更改后是否有执行命令的方法?

  2. 2

    Bash脚本直到延迟后才执行命令

  3. 3

    如何仅当 hdfs 中有文件时才执行命令

  4. 4

    命令行遍历所有文件夹并执行命令

  5. 5

    Bash:遍历所有子目录并在某些文件上执行命令

  6. 6

    快速执行命令后获取终端输出

  7. 7

    在Vim中执行命令后自动缩进文件

  8. 8

    我如何遍历FolderA的所有子文件夹并执行命令来检查已修改的文件

  9. 9

    是否可以使用awk打印文件中的所有行,然后在单个列上执行命令?

  10. 10

    cd进入所有目录,对该目录中的文件执行命令,然后返回到先前的当前目录

  11. 11

    在终端中执行命令后,有时我无法执行其他命令

  12. 12

    在终端中执行命令后,有时我无法执行其他命令

  13. 13

    在zmap中执行命令后的猫

  14. 14

    inotifywait建立监视后执行命令

  15. 15

    inotifywait建立监视后执行命令

  16. 16

    执行命令后如何控制输出?

  17. 17

    执行命令后如何应用-v?

  18. 18

    我执行命令后出现黑屏

  19. 19

    从挂起恢复后如何执行命令?

  20. 20

    写入“:w”后,VIM执行命令

  21. 21

    SSH成功连接后执行命令

  22. 22

    更改目录后执行命令

  23. 23

    仅当端口空闲时才执行命令的Bash脚本

  24. 24

    如何从python脚本打开cygwin,执行命令并从文件中的命令行获取数据

  25. 25

    python-执行命令并获取输出

  26. 26

    如何获取执行命令的用户的IP?

  27. 27

    执行特定命令后如何执行命令/脚本?

  28. 28

    在执行命令后如何编写shell脚本以自动获取密码

  29. 29

    gnome-terminal从文件执行命令

热门标签

归档