问题列表 - 第23279页

在Windows上使用PHP进行分叉

我们在Windows服务器上运行PHP(确实是许多问题的根源,但目前不是迁移选项).有几点需要用户启动的操作才能启动一些需要一段时间的事情以及用户在成功或失败时不需要知道的事情,例如发送电子邮件或确认一些第三方帐户已更新.如果我可以使用fork pcntl_fork(),这将非常简单,但PCNTL功能在Windows中不可用.

似乎我能得到的最接近的是做这种性质的事情:

exec( 'php-cgi.exe somescript.php' );
Run Code Online (Sandbox Code Playgroud)

但是,这会复杂得多.我需要开始的行动依赖于已经存在于运行过程中的大量上下文; 使用上面的例子,我需要找出基本数据并以某种方式将它提供给新脚本.如果我可以分叉,那只是让父进程提前返回,让孩子继续处理更多事情.

我发现有一些人在谈论他们自己在Windows上编译各种PCNTL函数的工作,但似乎没有任何东西可用(破坏的链接等).

尽管这个问题与我的名字几乎同名,但似乎问题是执行超时比需要分叉更多.所以,我最好选择重构一下来处理调用php-cgi,还是有其他选择?

编辑:似乎exec()不适用于此,至少在没有我弄清楚它的其他方面时,因为它等待直到调用返回.我想我可以使用START,有点像exec( 'start php-cgi.exe somescript.php' );,但它仍然等待,直到另一个脚本完成.

php windows fork

13
推荐指数
1
解决办法
1万
查看次数

在R中编辑函数有哪些方法?

假设我们有以下功能:

foo <- function(x)
{
    line1 <- x
    line2 <- 0
    line3 <- line1 + line2
    return(line3)
}
Run Code Online (Sandbox Code Playgroud)

我们想要改变第二行:

    line2 <- 2
Run Code Online (Sandbox Code Playgroud)

你会怎么做?

一种方法是使用

fix(foo)
Run Code Online (Sandbox Code Playgroud)

并改变功能.

另一种方法是再次编写该函数.

还有另外一种方法吗?(记住,任务是改变第二行)

我想要的是某种方式将函数表示为字符串向量(好吧,字符),然后更改其中一个值,然后再将其转换为函数.

r editing function

47
推荐指数
5
解决办法
3万
查看次数

如何使用 SWIG 生成的接口在 C# 中正确向下转型?

我有一个非常庞大且成熟的 C++ 代码库,我正在尝试使用 SWIG 为其生成 C# 接口。我无法更改实际的 C++ 代码本身,但我们可以使用 SWIG 提供的任何内容来扩展/更新它。我面临一个问题,如下所示编写的 C++ 函数会导致 C# 出现问题。

A* SomeClass::next(A*)
Run Code Online (Sandbox Code Playgroud)

调用者可能会执行以下操作:

A* acurr = 0;
while( (acurr = sc->next(acurr)) != 0 ){
    if( acurr isoftype B ){
        B* b = (B*)a;
        ...do some stuff with b..
    }
    elseif( acurr isoftype C )
    ...
}
Run Code Online (Sandbox Code Playgroud)

本质上,迭代元素容器,根据元素的真实类型,执行不同的操作。遗憾的是,SWIG 为“next”函数生成的 C# 层执行了以下操作:

return new A();
Run Code Online (Sandbox Code Playgroud)

因此,C# 中的调用代码无法确定返回的对象是否实际上是派生类,它实际上似乎始终是基类(这确实有道理)。我遇到过几种解决方案:

  1. 使用%extend SWIG关键字在对象上添加方法并最终调用dynamic_cast。在我看来,这种方法的缺点是,这需要您了解继承层次结构。就我而言,它相当大,我认为这是一个维护问题。
  2. 使用 %factory 关键字提供方法和派生类型,并让 SWIG 自动生成dynamic_cast 代码。这似乎是一个比第一个更好的解决方案,但是经过更深入的研究,它仍然需要您寻找它可能返回的所有方法和所有可能的派生类型。再次,这是一个巨大的维护问题。我希望我有一个文档链接,但我找不到。我通过查看 SWIG 附带的示例代码发现了此功能。
  3. 创建一个 C# 方法来创建派生对象的实例并将 cPtr 传输到新实例。虽然我认为这很笨拙,但它确实有效。请参阅下面的示例。
    公共静态对象castTo(对象fromObj,类型toType)
    {
        对象 retval = …

c# c++ swig downcast

4
推荐指数
1
解决办法
3168
查看次数

在MySQL中实现ac/c ++样式union作为列

朋友们,

我有一个奇怪的需要,无法思考我的问题.由于关键字回收,优秀而强大的Google几乎没有帮助(正如您所见).你能帮我吗?

我想要做的是将多种类型的数据存储在MySQL的单个列中.

这是一个等同于C联合的数据库(如果你搜索MySQL和Union,你显然在SQL中的UNION关键字上得到了很多东西).

[随后简化案例]因此,让我们说我们有人 - 有名字 - 和STORMTROOPERS - 有TK号码.您不能同时拥有名称和TK编号.你要么是BOB SMITH - 或者 - TK409.

在CI中可以将其表达为联盟,如下所示:

union {
        char * name;
        int tkNo;
      } EmperialPersonnelRecord;
Run Code Online (Sandbox Code Playgroud)

这使得它,这样我要么存储一个指向字符数组在类型EmperialPersonnelRecord的ID,但不是两者.

我在列上寻找MySQL等价物.我的列将存储int,double或varchar(255)(或任何组合).但只占用最大元素的空间.

这可能吗?

(当然,只要有足够的时间,金钱和意志,任何事情都是可能的 - 我的意思是,如果我是穷人,懒惰并且在截止日期之前有可能......也就是"开箱即用")

c mysql unions

6
推荐指数
1
解决办法
508
查看次数

在Git中恢复文件的修改时间

我理解每次更改文件时更新修改时间默认Git行为,但有时我想恢复文件的原始修改时间.

有没有办法告诉Git这样做?

(例如,在处理大型项目时,我做了一些更改configure.ac,发现autotools在我的系统上不起作用,并希望将其恢复configure.ac到原始内容和修改时间,这样make就不会尝试configure用我破损的autotools 更新.)

git

47
推荐指数
5
解决办法
2万
查看次数

如何在java中获取以前的日期

我有一个格式为yyyyMMdd的字符串对象 .是否有一种简单的方法来获取具有相同格式的前一个日期的字符串?谢谢

java date

13
推荐指数
5
解决办法
7万
查看次数

参考Git分支开始提交

我试图找到如何从脚本引用分支启动提交.我指的是分支分支的提交sha.

此外,我希望它适用于svn repo制作的历史.

这篇文章只是首次提交了repo创建,而不是功能分支启动提交.

git reference commit

12
推荐指数
1
解决办法
3541
查看次数

Windows Phone 7:不支持现有库?

我希望它像引用我现有的库一样简单,以便在WP7中使用它们.但是,当我实际使用它时,它抱怨因为.Net CF而无法加载它们.

我是否需要将它们重新编译为.NET CF或其他什么?

我认为WP7的最大优点是:利用现有的代码库......?如果我需要从中删除所有内容并维护多个版本,我如何利用现有的代码库?

.net compact-framework windows-phone-7

6
推荐指数
1
解决办法
355
查看次数

Rails:使用Paperclip防止重复的照片上传?

如果用户尝试使用Paperclip将同一张照片两次上传到Rails应用程序,是否仍然会抛出验证错误?Paperclip似乎没有提供此功能......

我正在使用Rails 2.3.5和Paperclip(显然).


解决方案:(或至少其中一个)

使用Beerlington的建议,我决定使用MD5校验和比较:

class Photo < ActiveRecord::Base
  #...
  has_attached_file :image #, ...

  before_validation_on_create :generate_md5_checksum
  validate :unique_photo
  #...

  def generate_md5_checksum
    self.md5_checksum = Digest::MD5.hexdigest(image.to_file.read)
  end

  def unique_photo
    photo_digest = self.md5_checksum
    errors.add_to_base "You have already uploaded that file!" unless User.find(self.user_id).photos.find_by_md5_checksum(photo_digest).nil?
  end

  # ...
end
Run Code Online (Sandbox Code Playgroud)

然后我刚刚在我的photos桌子上添加了一个专栏md5_checksum,瞧!现在,如果您尝试上传同一张照片,我的应用会抛出验证错误!

不知道这是多么高效/低效,所以重构是受欢迎的!

谢谢!

ruby-on-rails paperclip

10
推荐指数
2
解决办法
4276
查看次数

我们可以仅基于参数是值还是引用来重载函数?

我的答案没有!因为按值传递并通过引用传递看起来与调用者相同.

但是,下面的代码编译正确

class A {

public:
void f(int i) {}    

void f(int& i) {}
};
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用它时,会出现编译错误.

int main () {

   A a;
   int i = 9;
   int& j = i;
   a.f(1);
   a.f(i);
   a.f(j);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么即使不知道它将被使用,编译器也不会禁用它?

c++ overloading pass-by-reference pass-by-value

7
推荐指数
2
解决办法
1608
查看次数