我是ios开发的新手.
我按照这个迁移示例来使用预先填充的数据库并稍微更改代码
这是我使用的最终代码 AppDelegate -> func application
let defaultPath = Realm.Configuration.defaultConfiguration.path!
let path = NSBundle.mainBundle().pathForResource("default", ofType: "realm")
if let bundledPath = path {
print("use pre-populated database")
do {
try NSFileManager.defaultManager().removeItemAtPath(defaultPath)
try NSFileManager.defaultManager().copyItemAtPath(bundledPath, toPath: defaultPath)
} catch {
print("remove")
print(error)
}
}
Run Code Online (Sandbox Code Playgroud)
我正在一个真实的设备中测试它.
它可以工作,但根据代码逻辑,它将始终重置为预先填充的数据库.这已经过验证:应用程序重启后数据会重置.
我试过moveItemAtPath而不是copyItemAtPath.权限错误
我试图在复制后删除预先填充的数据库文件.权限错误
我尝试使用预先填充的数据库文件作为域默认配置路径.也发生了错误.
想象一下,一个活动将有10,000到30,000个文件,每个文件大约4kb,应写入磁盘.
而且,会有几个广告系列同时运行.10个上衣.
目前,我采用通常的方式:file_put_contents.
它完成了工作,但速度很慢,而且它的php进程一直占用100%的CPU.
fopen, fwrite, fclose好吧,结果类似于file_put_contents.
我尝试了一些异步的东西,比如php eio和swoole.
它会更快,但在一段时间后它会产生"太多的打开文件".
php -r 'echo exec("ulimit -n");' 结果是800000.
任何帮助,将不胜感激!
好吧,这有点令人尴尬......你们是正确的,瓶颈是它如何生成文件内容......