最近很多小伙伴都在问php–在一定量的查询/解析时间后停止脚本(没有致命错误)和php解析过程这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展AI生成的蘑菇科普书籍存有致命错误,误
最近很多小伙伴都在问php – 在一定量的查询/解析时间后停止脚本(没有致命错误)和php解析过程这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展AI生成的蘑菇科普书籍存有致命错误,误食后果严重、Android Kotlin 前台服务在一段时间后停止、android – 如何在一定次数后停止计时器、Android小部件在一段时间后停止工作?等相关知识,下面开始了哦!
本文目录一览:- php – 在一定量的查询/解析时间后停止脚本(没有致命错误)(php解析过程)
- AI生成的蘑菇科普书籍存有致命错误,误食后果严重
- Android Kotlin 前台服务在一段时间后停止
- android – 如何在一定次数后停止计时器
- Android小部件在一段时间后停止工作?
php – 在一定量的查询/解析时间后停止脚本(没有致命错误)(php解析过程)
我有一个从外部数据库中提取的脚本,并将数据存储在本地数据库中.我在共享服务器环境中进行设置,因此我无法让脚本运行超过两分钟,但运行完成需要大约5-10分钟.
我可以让脚本在一分半钟后停止其foreach循环,所以我可以重定向到相同的脚本但是使用不同的数据库偏移量来拾取它离开的位置吗?
我可以使用GET查询字符串来完成最后一部分,但我不确定如何计时.
解决方法:
最简单的方法是在脚本开头设置一个time()并检查foreach循环中的差异.
$start = time(); // Returns time in seconds
foreach($bigdata as $row) {
if(time()-$start > 100) { // Stop 20 seconds before 120 sec limit
// Some code for exiting the loop...
break;
}
}
AI生成的蘑菇科普书籍存有致命错误,误食后果严重
it之家 8 月 30 日消息,非营利组织纽约真菌学会(nyms)近日发出警告,表示亚马逊为代表的电商平台上,充斥着各种 ai 生成的蘑菇觅食科普书籍,其中存在诸多错误。如果某人在野外求生中,根据这些 ai 书籍的知识食用蘑菇,严重的可能会导致死亡。
该机构指出,亚马逊和其他电商平台上存在大量由人工智能生成的科普书籍,这对于初学者或对某一领域不太熟悉的用户来说是一个问题。如果误信这些错误信息,可能会带来生死关头的后果
纽约真菌学会主席Sigrid Jakob向多家媒体发出了一封公开信。IT之家翻译部分内容如下:“北美有数百种有毒蘑菇,其中几种是致命的。这些蘑菇与主流可食用蘑菇相似,但在由AI生成的书籍中存在许多错误描述,误食可能会带来严重后果。”
以上就是AI生成的蘑菇科普书籍存有致命错误,误食后果严重的详细内容,更多请关注php中文网其它相关文章!
Android Kotlin 前台服务在一段时间后停止
如何解决Android Kotlin 前台服务在一段时间后停止?
我正在开发用于用户跟踪的前台位置服务。每次位置更新时,此服务都会向 API 发送更新当前位置的请求。问题是当应用程序置于后台或屏幕被锁定时,服务会在一段时间后停止发送请求(通常大约 1 分钟,在此期间发送大约 10 个请求)。应用程序恢复后,服务再次开始工作,并在最小化/锁定屏幕后重复该场景。
在 onStartCommand
中,我尝试返回多个启动选项,但都没有奏效。我已经在 Android 10 和 11 上测试了该应用。
服务源码:
class LocationService: Service() {
@Inject
lateinit var apiService: ApiService
private val composite = Compositedisposable()
private var locationManager: LocationManager? = null
private var locationListener: LocationListener? = null
override fun onBind(p0: Intent?): IBinder? =
null
val NOTIFICATION_CHANNEL_ID = "location_tracking"
val NOTIFICATION_CHANNEL_NAME = "Location tracking"
val NOTIFICATION_ID = 101
var isFirstRun = true
@SuppressLint("MissingPermission")
override fun onCreate() {
App.component.inject(this)
setupLocationListener()
locationManager = getSystemService(LOCATION_SERVICE) as LocationManager?
val criteria = Criteria()
criteria.accuracy = Criteria.ACCURACY_FINE
val provider = locationManager?.getBestProvider(criteria,true)
val minTime = 5*1000L
if(provider != null) locationManager?.requestLocationUpdates(provider,minTime,0f,locationListener)
super.onCreate()
}
override fun onStartCommand(intent: Intent?,flags: Int,startId: Int): Int {
if (isFirstRun) {
startForegroundService()
isFirstRun = false
} else {
Timber.d {"Resuming service"}
}
return super.onStartCommand(intent,flags,startId)
}
private fun startForegroundService() {
val notificationmanager = getSystemService(Context.NOTIFICATION_SERVICE) as notificationmanager
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) createNotificationChannel(notificationmanager)
val notificationBuilder = NotificationCompat.Builder(this,NOTIFICATION_CHANNEL_ID)
.setAutoCancel(false)
.setongoing(true)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle(NOTIFICATION_CHANNEL_NAME)
.setContentIntent(getMainActivityIntent())
startForeground(NOTIFICATION_ID,notificationBuilder.build())
}
private fun getMainActivityIntent()
= PendingIntent.getActivity(this,Intent(this,MainActivity::class.java)
.also { it.action = R.id.action_global_navigationScreenFragment.toString() },FLAG_UPDATE_CURRENT)
@RequiresApi(Build.VERSION_CODES.O)
private fun createNotificationChannel(notificationmanager: notificationmanager) {
val channel = NotificationChannel(NOTIFICATION_CHANNEL_ID,NOTIFICATION_CHANNEL_NAME,IMPORTANCE_LOW)
notificationmanager.createNotificationChannel(channel)
}
private fun setupLocationListener() {
locationListener = object: LocationListener {
override fun onLocationChanged(location: Location) {
val cords = GeoCoordinatesDTO(location.latitude.toFloat(),location.longitude.toFloat())
try {
composite.add(apiService.mobileUserAccountReportPosition(cords)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{},{ t ->
if(t is RuntimeException) {
e(t)
}
}
))
} catch(e: Exception) {
Log.e("GPS","error: $e")
}
}
override fun onStatusChanged(provider: String,status: Int,extras: Bundle) {}
override fun onProviderEnabled(provider: String) {}
override fun onProviderdisabled(provider: String) {}
}
}
override fun onDestroy() {
try {
locationManager?.removeUpdates(locationListener)
} catch(e: DeadobjectException) {}
super.onDestroy()
}
}
服务从 onStart
中的 MainActivity
funciorn 启动
private fun initializeLocationMonitor() {
locationService = Intent(this,LocationService::class.java)
if(!this.isServiceRunning(LocationService::class.java)) {
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
startForegroundService(locationService)
} else {
startService(locationService)
}
sendbroadcast(locationService)
}
}
我在清单中拥有以下权限并注册了服务:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<service
android:name=".Services.LocationService"
android:enabled="true"
android:exported="true"
tools:ignore="ExportedService,InnerclassSeparator"
android:foregroundServiceType="location"/>
解决方法
- 保持设备唤醒 - https://developer.android.com/training/scheduling/wakelock
// global service variable
private var wakeLock: PowerManager.WakeLock? = null
...
// initialize before setupLocationListener() is called
wakeLock =
(getSystemService(Context.POWER_SERVICE) as PowerManager).run {
newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"LocationService::lock").apply {
acquire(10*1000L) // 10 seconds
}
}
清单:
<uses-permission android:name="android.permission.WAKE_LOCK" />
- 检查您的应用是否在应用设置中限制了数据使用和电池服务器。
如果您的最小 sdk 是 14+,最好使用 WorkManager。它将使您免于使用和管理前台服务的许多麻烦。
https://developer.android.com/topic/libraries/architecture/workmanager
发送位置更新是 WorkManager 的最佳用例之一。
android – 如何在一定次数后停止计时器
我试过用循环来阻止它,但它一直在崩溃.尝试过使用带有三个参数的schedule(),但我不知道在哪里实现一个计数器变量.有任何想法吗?
final Handler handler = new Handler(); Timer timer2 = new Timer(); TimerTask testing = new TimerTask() { public void run() { handler.post(new Runnable() { public void run() { Toast.makeText(MainActivity.this,"test",Toast.LENGTH_SHORT).show(); } }); } }; int DELAY = 10000; for (int i = 0; i != 2 ;i++) { timer2.schedule(testing,DELAY); timer2.cancel(); timer2.purge(); }
解决方法
private final static int DELAY = 10000; private final Handler handler = new Handler(); private final Timer timer = new Timer(); private final TimerTask task = new TimerTask() { private int counter = 0; public void run() { handler.post(new Runnable() { public void run() { Toast.makeText(MainActivity.this,Toast.LENGTH_SHORT).show(); } }); if(++counter == 4) { timer.cancel(); } } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); timer.schedule(task,DELAY,DELAY); }
Android小部件在一段时间后停止工作?
我有两个类来完成提供者和接收者.
提供者:
public class WidgetProvider extends appwidgetprovider { @ Override public void onUpdate(Context context,AppWidgetManager appWidgetManager,int[] appWidgetIds) { Intent receiver = new Intent(context,FlashlightWidgetReceiver.class); receiver.setAction("COM_FLASHLIGHT"); receiver.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,appWidgetIds); PendingIntent pendingIntent = PendingIntent.getbroadcast(context,receiver,0); RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.appwidget_layout); views.setonClickPendingIntent(R.id.imageButton,pendingIntent); appWidgetManager.updateAppWidget(appWidgetIds,views); } }
接收器:
public class FlashlightWidgetReceiver extends broadcastReceiver { private static boolean isLightOn = false; private static Camera camera; MediaPlayer mp;@ Override public void onReceive(Context context,Intent intent) { RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.appwidget_layout); if (isLightOn) { views.setimageViewResource(R.id.imageButton,R.drawable.btn_switch_off); mp = MediaPlayer.create(context,R.raw.light_switch_off); } else { views.setimageViewResource(R.id.imageButton,R.drawable.btn_switch_on); mp = MediaPlayer.create(context,R.raw.light_switch_on); } mp.setonCompletionListener(new MediaPlayer.OnCompletionListener() { @ Override public void onCompletion(MediaPlayer mp) { // Todo Auto-generated method stub mp.release(); } }); mp.start(); AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); appWidgetManager.updateAppWidget(new ComponentName(context,WidgetProvider.class),views); if (isLightOn) { if (camera != null) { camera.stopPreview(); camera.release(); camera = null; isLightOn = false; } } else { camera = Camera.open(); if (camera == null) { Toast.makeText(context,"No Camera!",Toast.LENGTH_SHORT).show(); } else { Camera.Parameters param = camera.getParameters(); param.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH); try { camera.setParameters(param); camera.startPreview(); isLightOn = true; } catch (Exception e) { Toast.makeText(context,"No Flash!",Toast.LENGTH_SHORT).show(); } } } } }
建立:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:minWidth="40dp" android:minHeight="40dp" android:maxWidth="40dp" android:maxHeight="40dp" android:updatePeriodMillis="86400000" android:initialLayout="@layout/appwidget_layout" android:resizeMode="horizontal|vertical"> </appwidget-provider>
更新:缩短更新间隔会使窗口小部件更频繁地刷新,因此如果它被卡住,它会在30分钟后再次运行,然后它可能会在某个时间再次冻结.
更新2:更改日期立即冻结小部件,直到它刷新.
更新3:更改日期以某种方式重新启动启动器,每当启动器重新启动时,小部件冻结30分钟.
解决方法
今天关于php – 在一定量的查询/解析时间后停止脚本(没有致命错误)和php解析过程的讲解已经结束,谢谢您的阅读,如果想了解更多关于AI生成的蘑菇科普书籍存有致命错误,误食后果严重、Android Kotlin 前台服务在一段时间后停止、android – 如何在一定次数后停止计时器、Android小部件在一段时间后停止工作?的相关知识,请在本站搜索。
本文标签: