我经常用cron加载很少的脚本.现在我不存储任何日志,所以如果任何脚本无法加载,我会看到结果之前不会知道它 - 即使我注意到结果不正确,我也做不了什么,因为我不知道知道哪个脚本失败了.
我决定存储日志,但我仍然不知道该怎么做.所以,我的问题是 - 什么更有效 - 将日志存储在sql数据库或文件中?
我可以在我的mysql数据库中创建'logs'表并将每个日志存储在单独的行中,或者我可以使用php的file_put_contents或fopen/fwrite将日志存储在单独的文件中.
我的脚本在工作时每分钟大约会增加5个日志(总计).我做了很少的测试来确定什么更快--fopen/fwrite或mysql的插入.我将一个"插入"语句循环3000次以制作3000行并循环fopen/fwrite 3000次以制作带有示例文本的3000个文件.Fwrite的执行速度比sql的插入快4-5倍.我做了第二个循环 - 我循环'select'语句并将其分配给字符串3000次 - 我还使用'fopen'打开了3000个文件并将结果分配给字符串.结果是一样的 - fopen/fwrite完成任务的速度提高了4-5倍.
那么,对于所有有经验的程序员 - 您在存储日志方面的经验是什么?有什么建议?
// 04.09.2011编辑 - 谢谢大家的答案,他们帮助了很多.每个帖子都很有价值,所以很难接受只有一个答案;-)
我目前正在尝试使用mongoDB和nodeJS创建一个注册表单 - 我创建了新的数据库和集合 - 我想在我的数据库中存储:用户名,密码,电子邮件和insert_time.
我已经为用户名/电子邮件添加了唯一索引并检查它是否有效 - 我无法使用mongo的控制台或rockmongo(php mongodb manager)添加重复的条目 - 所以它工作正常.
但是 - 当正在执行注册新帐户的代码片段并使用已存在于数据库中的数据进行插入时 - 它返回一个对象,该对象包含应该添加新数据的所有数据,唯一身份.关键是 - 它应该返回一个错误,表示条目不能重复并且插入失败 - 而是返回数据并给它一个新的id.已经驻留在数据库中的数据保持不变 - 即使ID保持不变 - 也不会使用脚本插入返回的新数据重写.
所以,问题是......我做错了什么?或者也许一切都很好,数据库的插入应该返回数据,即使它失败了?...
我甚至尝试在执行索引之前定义索引.我尝试使用mongoDB的默认函数和mongoJS函数插入数据- 结果在两种情况下都是相同的.
我正在尝试执行的代码(对于mongoJS):
var dbconn = require("mongojs").connect('127.0.0.1:27017/db', ['users']);
var register = function(everyone, params, callback)
{
// TODO: validation
dbconn.users.ensureIndex({username:1},{unique:true});
dbconn.users.ensureIndex({email:1},{unique:true});
dbconn.users.save(
{
username: params.username,
password: params.password,
email: params.email,
insert_time: Date.now()
},
function(error, saved)
{
if(error || !saved)
{
callback(false);
}
else
{
console.log(error);
console.log(saved);
callback(true);
}
});
}
Run Code Online (Sandbox Code Playgroud)
对于这两种情况 - …
我需要做的就是比较两个对象数组,并删除第二个具有相同属性值的项目.例如:
var a = [{'name':'bob', 'age':22}, {'name':'alice', 'age':12}, {'name':'mike', 'age':13}];
var b = [{'name':'bob', 'age':62}, {'name':'kevin', 'age':32}, {'name':'alice', 'age':32}];
function remove_duplicates(a, b) {
for (var i = 0, len = a.length; i < len; i++) {
for (var j = 0, len = b.length; j < len; j++) {
if (a[i].name == b[j].name) {
b.splice(j, 1);
}
}
}
console.log(a);
console.log(b);
}
console.log(a);
console.log(b);
remove_duplicates(a,b);
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么这不起作用而是给出:
Uncaught TypeError: Cannot read property 'name' of undefined
Run Code Online (Sandbox Code Playgroud)
我期望的是b中的以下内容:
[{'name':'kevin', 'age':32}];
Run Code Online (Sandbox Code Playgroud) 我正在谈论的网站 - codecademy.com和tryruby.org.
我的猜测是控制台很简单div,关键监听器"附加"它.每当用户按任意键并按Enter键提交它时,控制台只会添加他在最后一个字母后键入的内容,div并将该>> [type here部分"移动"到该行的最后一行div.
但是,我不确定这是否如此简单,所以我想知道其他人的想法.我认为这样效率太低 - 特别是当我们谈论整个控制台上塞满文本的情况时 - 在最后一行添加任何符号并将剩余的文本移动到那时将花费太多时间用于浏览器处理.
我正在尝试使用React为Ghost制作主题.我正在使用webpack作为我的构建工具.如何告诉webpack提供特定.hbs文件?现在看来,Webpack只支持.html文件.下面是我的dev的配置... 没有的WebPack通常支持被传递给它的东西吗?
var path = require('path');
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
entry: [
'webpack-dev-server/client?http://localhost:2368',
'webpack/hot/only-dev-server',
'./src/router'
],
devtool: 'eval',
debug: true,
output: {
path: path.join(__dirname, 'public'),
filename: 'bundle.js',
//publicPath: '/static/'
},
resolveLoader: {
modulesDirectories: ['node_modules']
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new webpack.NoErrorsPlugin(),
new HtmlWebpackPlugin({
template: './public/default.hbs',
//hash: true,
inject: 'body',
filename: 'default.hbs'
})
],
resolve: {
extensions: ['', '.js', '.sass', '.css', '.hbs']
},
module: {
loaders: [
// js …Run Code Online (Sandbox Code Playgroud) 如何使用react-native的fetch api将文件上传到服务器需要实现与此类似的功能 -
------WebKitFormBoundaryRAxza9ew2ADaYHn5
Content-Disposition: form-data; name="file"; filename="66154520.jpg"
Content-Type: image/jpeg
------WebKitFormBoundaryRAxza9ew2ADaYHn5--
Run Code Online (Sandbox Code Playgroud) 我正在尝试快照测试这段代码:
import React, { Component } from 'react';
import {
Picker,
} from 'react-native';
export default class TestComponent extends Component {
render() {
return (
<Picker
selectedValue={this.props.asset.type}
onValueChange={this.props.onTypeChange}>
<Picker.Item label="Type of asset" value="default" />
<Picker.Item label="Car" value="car" />
<Picker.Item label="Boat" value="boat" />
<Picker.Item label="Ship" value="ship" />
</Picker>
);
}
}
Run Code Online (Sandbox Code Playgroud)
我的测试现在看起来像这样:
import 'react-native';
import React from 'react';
import TestComponent from './TestComponent';
import renderer from 'react-test-renderer';
describe('TestComponent', () => {
const asset = {
type: 'car',
}
it('renders correctly', () => …Run Code Online (Sandbox Code Playgroud) javascript ×3
react-native ×2
append ×1
arrays ×1
fwrite ×1
ghost-blog ×1
jestjs ×1
jquery ×1
logging ×1
mocking ×1
mongodb ×1
mysql ×1
node.js ×1
object ×1
php ×1
reactjs ×1
ruby ×1
unit-testing ×1
webpack ×1