我有一些javascript,可以触发大约100个调用php脚本.php脚本占用大量内存并需要几秒钟才能完成,然后返回json响应pass或fail.
我不希望ajax调用是异步的,因为服务器会停止运行100个自身的实例,所以我尝试使用同步,唯一的问题是它冻结网页,而它一次调用脚本一个调用.
如何一次启动一个ajax调用而不冻结我正在使用的页面?
var a = [];
a[0] = 'test';
a[1] = 'hello';
a[2] = 'another';
$(document).ready(function(){
$.each(a, function(k,v) {
$.ajax({
url:'/this-script-takes-a-few-seconds-to-complete.php',
async:false,
data: {foo: v},
success: function(data){
console.log(data);
}
});
});
});
Run Code Online (Sandbox Code Playgroud) 我有一个包含90K文件的目录.这是一个非常大量的文件,可以像ls失败一样重击功能.当然,os.listdir()从我的python(Mac Python,2.5版)脚本开始; 它失败了OSError: [Errno 12] Cannot allocate memory: '.'
人们会说"不要把那么多文件放在一个目录里!你疯了吗?" - 但我喜欢假装我生活在未来,一个辉煌,发光的地方,我可以随意使用千兆字节的内存,而且不需要太担心我的文件到底在哪里,只要有我的旋转盘片上留下了锈迹.
那么,这个os.listdir()问题有一个很好的解决方法吗?我考虑过只是冒出来find,但这有点严重,不幸的find是递归,Mac OS X 10.6上没有受支持的maxdepth选项.
这是os.listdir通过shell来查找的内容,粗略地说:
def ls(directory):
import os
files = os.popen4('find %s' % directory)[1].read().rstrip().split('\n')
files.remove(directory)
return files # probably want to remove dir prefix from everything in here too
Run Code Online (Sandbox Code Playgroud)
更新: os.listdir()在Python 2.6中成功.
在异步编程模型中编写代码的主要目的之一(更具体地说 - 使用回调而不是阻塞线程)是为了最小化系统中阻塞线程的数量.
对于运行线程,由于上下文切换和同步成本,这个目标是显而易见的.
但是被阻止的线程呢?为什么减少它们的数量如此重要?
例如,在等待来自Web服务器的响应时,线程被阻塞,并且不占用任何CPU时间,并且不参与任何上下文切换.
所以我的问题是:除了RAM(每个线程大约1MB?)阻塞线程占用了哪些其他资源?
另一个更主观的问题是:在什么情况下,这个成本真的证明了编写异步代码的麻烦(例如,价格可能是将你的好的连贯方法拆分为大量的beginXXX和EndXXX方法,并将参数和局部变量移动到类字段).
更新 - 我没有提及或没有给予足够重视的其他原因:
更多线程意味着更多地锁定公共资源
更多线程意味着更多创建和处理线程,这是昂贵的
系统肯定会耗尽线程/ RAM然后停止服务客户端(在Web服务器方案中,这实际上可以降低服务)
我有一个Oracle视图,它使用我在任何地方都找不到的表.但是,我仍然可以查询视图,我认为这是不可能的.
视图内容是否缓存在某个地方,从表格仍然存在的时候开始,还是我对表格看起来不够努力?
为了清楚起见:我已经查看了ALL_TABLES和ALL_OBJECTS,并且表中(或其他任何内容)都没有出现.
这是一个非常密集的问题,但我很累.
我需要一个可以在验证器控件中执行的正则表达式,它将捕获任何非字母数字字符.换句话说,如果字符串仅包含az,AZ或0-9,则regexp需要匹配.
我知道如果字符串中存在非法字符,那么编写一个匹配的正则表达式会非常容易 - 问题是我需要与此相反,因为它在验证器中.那是什么让我头疼.
解决方案赞赏
我正在尝试将链接插入到具有id"popup"的空<a>中.该链接将在弹出框中打开当前页面(我将在稍后定义参数).我正在尝试将制作超链接所需的HTML与JS变量'window.location.href'串在一起 - 如何将它们串在一起?即如何修复它以使其工作,或将其重写为'window.location.href'作为变量的函数:
$("#popup").html('<a href=' . window.location.href . '>open popup</a>');
Run Code Online (Sandbox Code Playgroud) 我所做的就是在脚本下运行:D:\ Tools\MongoDb\bin\mongod.exe --dbpath D:\ MongoDb\data\
然后我得到异常:连接到服务控制管理器时出错:访问被拒绝.(5)
我使用管理员帐户来操作它,我已经创建了与脚本相关的文件夹.
当我在32位Windows Server 2003中安装32位mongodb时,我没有遇到这样的问题.
我很感激任何帮助!
前段时间(比如3年或4年),我听说过基于C#.NET源代码生成JavaScript(客户端)代码的能力.我不记得细节,可能仅用于验证目的......
如果您对此有所了解,请提醒一下吗?
非常感谢.
PS欢迎任何想法.
我已经google了,但我可以找到一种方法来使用jQuery构建json并使用for循环将其发送到php.我有一个html表,我想从每一行中获取值(我不知道将有多少行/值)构造一个json字符串,即.[{"row": 1, "supp_short_code" : blah blah....}, {"row": 2, ....} ....]
但我不知道如果jQuery发现更多的值,如果有意义的话,如何继续添加到json数据串?
编辑:
所以,如果我有这个
$('#submit').live('click',function(){
var supp_short_code=$('.supp_short_code').text();
var project_ref=$('.project_ref').text();
var om_part_no=$('.om_part_no').text();
var description=$('.description').text();
var cost_of_items=$('.cost_of_items').text();
var cost_total=$('.cost_total').text();
var dataString = 'string=//' + supp_short_code + '//' + project_ref + '//' + om_part_no + '//' + description + '//' + cost_of_items + '//' + cost_total
$.ajax
({
type: "POST",
url: "order.php",
data: dataString,
cache: false,
success: function()
{
alert("Order Submitted");
}
});
});
Run Code Online (Sandbox Code Playgroud)
那么(大致)我需要在这段代码中改变什么?

好的,正如您在屏幕截图中看到的那样,当用户点击顶部表格中的一行时,我正在使用jquery动态添加底部表格,计算总计并且他们可以指定他们想要使用哪个供应商.然后我使用jquery将这些值集中到顶部的jquery代码的$('submit')位.然后我想将这些值发送到一个php页面,它将以某种方式解析收到的数据,将其插入到mysql数据库中,就像"id 1 product blah price blah supplier blah …