在php系统命令中,我们使用以下内容
system("ffmpeg -i test.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv output_file.flv 2>&1 &").
Run Code Online (Sandbox Code Playgroud)
请解释上述系统命令的用法.'2>&1&'代表什么?我想将进程详细信息转储到文件中,我该怎么做?
非常感谢你.
我正在开发一个电子邮件系统,我必须为公司插入CMS.我正在寻找一种方法,使电子邮件发件人脚本在后台运行,而管理员可以导航甚至关闭浏览器.
我找到了名为PHP的函数ignore_user_abort(),即使它已经超时,它也是保持页面运行所必需的.
现在我有三个"启动脚本"的解决方案:
我可以使用iframe
我可以使用我之前配置的Ajax调用很早就超时.例如:使用jQuery框架:$.ajaxSetup({ timeout: 1000 });
我可以使用一个cron作业,但我想避免这个解决方案,因为它们是"虚拟的"并且在该服务器上不稳定.
还有其他解决方案吗?我不喜欢iframe解决方案,但我已经将它们与Ajax上传器脚本一起使用了.
我不希望管理员点击F5并启动它的第二个实例.
该公司的用户被告知只使用Firefox登录CMS.谢谢
我发现在我的应用程序已经在后台运行一段时间后,(半小时+也许)它会在恢复时立即崩溃.
崩溃日志显示它是EXC_BAD_ACCESS,但我不知道如何调试这个,因为我不知道什么时候我的应用程序转到后台(特别是很长一段时间).(异常代码重复为0x0000000)
是否有任何关于此的文档/任何人都可以了解他们过去为解决这个问题所采取的措施吗?
虽然我们在这里,有没有办法测试这个,而不是等待几个小时前每次尝试?某种方式来模拟我的应用程序发生的任何事情?
谢谢
我只是仔细阅读了一下,这里有一些关于计时器的东西,我最近在我的应用程序中添加了一些使用计时器的东西,这可以提供更多信息吗?(见第12项)
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x32858a1c __pthread_kill + 8
1 libsystem_c.dylib 0x337013b4 pthread_kill + 52
2 libsystem_c.dylib 0x336f9bf8 abort + 72
3 libstdc++.6.dylib 0x30504a64 __gnu_cxx::__verbose_terminate_handler() + 376
4 libobjc.A.dylib 0x3068f06c _objc_terminate + 104
5 libstdc++.6.dylib 0x30502e36 __cxxabiv1::__terminate(void (*)()) + 46
6 libstdc++.6.dylib 0x30502e8a std::terminate() + 10
7 libstdc++.6.dylib 0x30502f5a __cxa_throw + 78
8 libobjc.A.dylib 0x3068dc84 objc_exception_throw + 64
9 MarsCrash 0x0000be88 0x1000 + 44680
10 MarsCrash 0x00020646 …Run Code Online (Sandbox Code Playgroud) & # disown the functions
Run Code Online (Sandbox Code Playgroud)
我们都知道&把任务放到后台,最重要的是让任务失败.
但它是如何实现的?
我们允许用户以CSV格式下载所有数据,但我们发现对于很多用户(拥有大量数据)我们确实需要在后台生成CSV文件,然后为他们提供链接稍后下载.
我知道如何在视图中动态生成CSV文件,但我不完全清楚在后台任务中生成它的最佳方法.
我目前正在使用csv_builder在视图中生成CSV文件...所以能够仍然使用它并且以某种方式将其直接输出到CSV文件中然后我可以使用回形针上传到S3,这真是太棒了.但那可能太牵强了.
我如何在Linux shell中工作,以便即使启动它的shell终止,这个工作仍然会持续存在?
更具体地说,我试图在一个进程上运行strace.如果我在终端上运行,它会完美运行.但是,我想在一个远程shell中执行它,它将在所有命令执行后立即停止."strace -p pid &"没有任何效果,因为当shell停止时,后台作业也会被杀死.
我该怎么办?
nohup似乎是我要找的东西.但是,ssh user@remote_machine script_name似乎也没有任何影响.在我的脚本中"nohup strace -p pid"
非常感谢!
概观
我的公司要求我发布一个可以每两个小时检查一次设备位置的应用程序.应用程序会通过TCP/IP套接字将这些位置数据发送到我的服务器,然后根据这些非常数据(直接通过相同的TCP/IP套接字)接收信息.所以我不是试图让我的应用程序在后台模式下连续运行(实际上,这似乎是iOS中的热门话题,而且它也不适合我的项目).
题
为了可靠,实现这一目标的最佳做法是什么?所以,我想知道:
didUpdateToLocation?beginBackgroundTaskWithExpirationHandler并使用Cocoa允许的10分钟来执行我的发送/接收任务吗?到目前为止我取得的成就/发现
location密钥Info.plist以便能够运行didUpdateToLocation处理程序.backgroundTimeRemaining什么时候didUpdateToLocation被调用.我得到了一个非常大的结果数,这似乎是正常的,因为在这一点上,applicationState它不在UIApplicationStateBackground但是在UIApplicationStateActive.这些要点在官方文档中并不十分清楚,我没有找到与我的具体案例相关的主题.
谢谢你的帮助.
我有一个健身应用程序,可以接收位置更新,并且自iOS 4以来一直在后台工作正常.我只是注意到,当iOS中的应用程序移动到后台(切换应用程序或锁定设备)时,位置更新会停止.我没有发现任何功能或背景权限变更的通知; 有谁知道发生了什么?
我的位置设置非常基本:
if (!self.locationManager) {
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
self.locationManager.distanceFilter = kCLDistanceFilterNone;
self.locationManager.activityType = CLActivityTypeFitness;
self.locationManager.pausesLocationUpdatesAutomatically = TRUE;
}
// request permissions on iOS 8+
if ([self.locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]) {
[self.locationManager requestWhenInUseAuthorization];
}
Run Code Online (Sandbox Code Playgroud)
然后这个回调接收更新:
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {
DLog(@"didUpdateToLocation");
}
Run Code Online (Sandbox Code Playgroud)
当应用程序处于前台时,一切都很好.一旦移动到后台,此消息就会出现在控制台中:
/BuildRoot/Library/Caches/com.apple.xbs/Sources/ExternalAccessory/ExternalAccessory-353.22.1/EAAccessoryManager.m:__52-[EAAccessoryManager _checkForConnectedAccessories:]_block_invoke-785 ending background task
Run Code Online (Sandbox Code Playgroud)
然后更新停止.当我将应用程序带到前台时,它们会再次恢复.
我没有直接使用EAAccessoryManager,只能猜测它是什么.我正在使用BluetoothLE框架从心率监视器接收数据,但是当我禁用此功能(停止实例化BluetoothLE对象)时,问题仍然存在.
我UIBackgroundModes分别设置location,external-accessory并且bluetooth-central因为我也有卵石手表连接.我尝试添加,bluetooth-peripheral但没有帮助.我也有,NSLocationWhenInUseUsageDescription并NSBluetoothPeripheralUsageDescription设置,这些都在工作.
我正在调试我们的应用程序的用户报告,这些报告在iOS11开始时在后台重复退出,即使在活动使用期间(例如,用户背景我们并在几秒钟或一分钟内返回,只是发现它重新启动).崩溃日志都显示了相同的原因:看门狗超时.以下是一个此类崩溃日志中的相关位:
Exception Type: EXC_CRASH (SIGKILL)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Termination Reason: Namespace <0xF>, Code 0x8badf00d
Triggered by Thread: 0
Run Code Online (Sandbox Code Playgroud)
我意识到我们的代码在接收推送通知或后台运行时的操作时间有限.我们肯定使用UIBackgroundTasks(使用Alamofire Networking,FWIW),我们确实有过期处理程序来执行此操作:
backgroundTask = [application beginBackgroundTaskWithExpirationHandler:^{
[application endBackgroundTask:backgroundTask];
backgroundTask = UIBackgroundTaskInvalid; // Set the task to be invalid
DebugLog(@"Ended because expiration");
}];
Run Code Online (Sandbox Code Playgroud)
关于这些崩溃报告最令人困惑的事情是我们的代码无处于堆栈中.我们可以从Apple对0x8badf00d异常代码的讨论中看到,实际上,有问题的代码正在主线程上主动执行.
但是,在我的情况下,没有任何堆栈有任何代码被执行.这是一个代表性的样本:
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x0000000183208bc4 0x183208000 + 3012
1 libsystem_kernel.dylib 0x0000000183208a3c 0x183208000 + 2620
2 CoreFoundation 0x00000001836b9c4c 0x1835d0000 + 957516
3 CoreFoundation 0x00000001836b7818 …Run Code Online (Sandbox Code Playgroud) 编辑摘要
我有一个后台服务,它需要一个DBContext,我的DbContext依赖于HttPContext,因为它使用UserClaims来过滤上下文.HttpContext在从BackgroundService请求DbContext时为null(这是设计原因,因为没有与BackgroundService关联的WebRequest).
我如何捕获和moq HTTPContext,所以我的用户声称将转移到后台服务?
我正在编写一个托管服务来排队从Signalr中的中心推送消息.我的背景.
public interface IBackgroundTaskQueue
{
void QueueBackgroundWorkItem(Func<IServiceProvider, CancellationToken, Task> workItem);
Task<Func<IServiceProvider, CancellationToken, Task>> DequeueAsync(CancellationToken cancellationToken);
}
public class BackgroundTaskQueue : IBackgroundTaskQueue
{
private ConcurrentQueue<Func<IServiceProvider, CancellationToken, Task>> _workItems = new ConcurrentQueue<Func<IServiceProvider, CancellationToken, Task>>();
private SemaphoreSlim _signal = new SemaphoreSlim(0);
public void QueueBackgroundWorkItem(Func<IServiceProvider, CancellationToken, Task> workItem)
{
if (workItem == null)
{
throw new ArgumentNullException(nameof(workItem));
}
this._workItems.Enqueue(workItem);
this._signal.Release();
}
public async Task<Func<IServiceProvider, CancellationToken, Task>> DequeueAsync(
CancellationToken cancellationToken)
{
await this._signal.WaitAsync(cancellationToken);
this._workItems.TryDequeue(out var workItem);
return workItem;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在排队需要我的DbContext的工作项,My …
c# dependency-injection background-process signalr asp.net-core